发布和订阅
发布和订阅操作一定要在登录房间成功后才能操作成功,否则直接返回失败,不再通过异步回调通知。
发布/取消发布
- 发布本地音/视频流,成功后远端可以订阅收看
// TrackInfo 只有通过 TrackInfo::CreateXXXTrackInfo 方法才能创建
virtual int PublishTracks(const TrackInfoList& tracks_info_list_) = 0;
发布操作需在加入房间成功的前提下进行,否则发布将失败;同时此方法为异步方法,当返回 0 时,其发布结果在 QNRTCRoomListener::OnLocalPublishResult
进行通知,错误码请参考错误码列表;
- 取消发布本地音/视频流
virtual int UnPublishTracks(const list<string>& tracks_id_list_) = 0;
此方法为同步方法,没有异步回调通知接口;
静默本地音/视频
- 静默本地已发布音频流,置为
true
后,远端用户用户可以继续订阅此路音频流,但是听不到任何声音,置为false
后取消此效果;
virtual int MuteAudio(bool mute_flag_) = 0;
注:只有当本地音频已发布的前提下调用才有效,每次发布不保存上次 Mute 记录;
- 静默本地已发布视频流,置为
true
后,此路 Track 视频流仍然存在,但本地和远端用户观看到的为黑屏效果,置为false
后,取消静默,恢复正常;
// @param track_id_ 需要静默的本地 Track Id
virtual int MuteVideo(const string& track_id_, bool mute_flag_) = 0;
静默仅对本地 Track 有效;
订阅/取消订阅
- 订阅远端用户的音/视频
// 订阅远端用户已发布 Tracks,用户构建 TrackInfo 并指定视频渲染窗口(音频 Track 不需要)后,传递给 SDK
// @param tracks_info_list_ 为 Track Info Id 列表,开发者需可在 `QNRoomListener::OnRemoteAddTracks` 回调中获取并记录
// @return 成功返回 0, 其它返回错误码列表
// 只有在房间连接状态下才能订阅,否则将直接返回失败,开发者应先判断方法返回值非 0,然后再通过 `QNRoomListener::OnSubscribeTracksResult` 回调判断订阅是否成功
virtual int SubscribeTracks(const TrackInfoList& tracks_info_list_) = 0;
- 取消订阅远端用户的音/视频
// 取消已订阅的 Tracks Id
// 此方法为同步接口,没有对应的异步回调通知
virtual int UnSubscribeTracks(const list<string>& tracks_id_vec_) = 0;