发布和订阅
本部分介绍能够实现向房间发布媒体流或取消发布,订阅媒体流或停止订阅等操作。
发布 Track
发布 Track 前,需要对 Track 进行配置和创建,详情请见音视频采集,创建好 Track 后即可将该 Track 通过 QNRTCEngine#publicTracks
向房间发布本地 Track。
public void publishTracks(List<QNTrackInfo> trackInfoList)
发布 Track 成功后,会触发如下回调:
本地
void onLocalPublished(List<QNTrackInfo> trackInfoList);
远端
void onRemotePublished(String remoteUserId, List<QNTrackInfo> trackInfoList);
取消发布 Track
调用 QNRTCEngine#unPublishTracks
取消发布本地媒体流。
public void unPublishTracks(List<QNTrackInfo> trackInfoList);
取消发布成功后,会触发如下回调:
远端
void onRemoteUnpublished(String remoteUserId, List<QNTrackInfo> trackInfoList);
简单场景发布/取消发布音视频
为了降低简单场景下客户的使用难度,我们提供了比较简易的发布方式,可通过 QNRTCEngine#publish
、QNRTCEngine#publishAudio
、QNRTCEngine#publicVideo
进行发布,发布成功后同样会触发上面的回调。同时,我们也提供了比较简易的取消发布方式,可通过 QNRTCEngine#unPublish
、QNRTCEngine#unPublishAudio
、QNRTCEngine.unPublishVideo 进行取消发布。
public void publish();
public void unPublish();
public void publishAudio();
public void unPublishAudio();
public void publishVideo();
public void unPublishVideo();
订阅远端 Track
在 v2.x.x 版本后提供了默认自动订阅的功能,用户可以通过调用 QNRTCEngine#setAutoSubscribe
进行对自动订阅功能的开启与关闭,默认为开启状态。
public void setAutoSubscribe(boolean autoSubscribe);
在自动订阅功能关闭时,用户可以通过调用 QNRTCManager#subscribeTracks
接口订阅远端 Tracks。
public void subscribeTracks(List<QNTrackInfo> trackInfoList);
本地订阅远端用户媒体流成功后,会触如下回调:
本地:
void onSubscribed(String remoteUserId, List<QNTrackInfo> trackInfoList)
取消订阅远端 Track
调用 QNRTCManager#unSubscribeTracks
接口取消订阅远端 Tracks。
public void unSubscribeTracks(List<QNTrackInfo> trackInfoList)
Mute
Mute Tracks
本地通过调用 QNRTCEngine#muteTracks(List<QNTrackInfo> trackInfoList)
即可对 Tracks 进行 mute 或取消 mute 功能。如需 mute 一个 Tracks,仅需在 QNTrackInfo 中将 muted 字段其设为 true 即可,示例代码如下:
localVideoTrack.setMuted(true);
localAudioTrack.setMuted(true);
mEngine.muteTracks(Arrays.asList(localVideoTrack, localAudioTrack));
以上代码即是 mute 本地的一个视频 Track 和本地的一个音频 Track,如果需要将其取消 mute,仅需将 muted 字段设为 false 即可。
Mute 本地音视频
除了上面直接 Mute Track 的方法,我们还提供了比较快捷的方法对本地音视频直接进行 mute 操作。通过调用QNRTCEngine#muteLocalAudio
接口 mute 本地音频,mute 后远端将无法听到本地的声音,通过调用 QNRTCEngine#muteLocalVideo
接口 mute 本地视频,mute 后远端将无法看到本地的画面。
Mute 本地视频:
public void muteLocalVideo(boolean isMute)
Mute 本地音频:
public void muteLocalAudio(boolean isMute)
Mute 远端音频
通过调用 QNRTCEngine#muteRemoteAudio
接口 mute 远端音频,mute 后将无法听到远端的声音
public void muteRemoteAudio(boolean isMute)