本文详细介绍如何使用百家云 SDK 订阅和取消订阅远端音视频。相关函数接口在 electron-sdk 2.0.7 及以上版本支持。
BRTC 提供了自动订阅模式:SDK 会自动播放远端用户的声音和视频,无需您进行额外操作,这是 SDK 的默认行为。建议在一个教室内的人数不要太多,可以节省拉流端的带宽消耗,降低拉流的卡顿率; 或者在同一个教室中人数较多时,使用 muteRemoteAudio、 muteRemoteVideo 手动关闭远端音频、视频流的下载和播放、渲染,也可以降低拉流的卡顿率。
您可以通过调用接口 muteRemoteAudio 来静音远端用户的声音,之后也可以通过调用接口 muteRemoteAudio 来解除对他的静音。
// 静音指定用户 userId 的音频 this.client.muteRemoteAudio(userId, true); // 恢复指定用户 userId 的音频播放 this.client.muteRemoteAudio(userId, false); // 静音所有远端用户的音频流 this.client.muteAllRemoteAudio(true); // 恢复播放所有远端用户的音频流 this.client.muteAllRemoteAudio(false);
您可以通过调用接口 startRemoteView 来显示远端用户的视频画面,但前提是您需要传递给 SDK 一个 view 对象,用来作为承载该用户的视频画面的渲染控件。
startRemoteView 的第一个参数是远端用户的 userId,第二个参数是您需要传递的 view 对象,第三个参数则是远端用户的流类型。其中第三个参数 streamType(流类型) 有三个可选的值,分别是:
注意事项
// 指定渲染远端用户的大流画面 this.client.setRemoteVideoStreamType(remoteUserId, BRTCCloud.BRTCVideoStreamType.BRTC_VIDEO_STREAM_TYPE_BIG) // 播放 remoteUserId 的主画面 this.client.startRemoteView(remoteUserId, view, BRTCCloud.BRTCVideoStreamType.BRTC_VIDEO_STREAM_TYPE_BIG); // 拉取远端用户 remoteUserId 的低分辨率画面(主画面和低分辩率画面只能二选一) //this.client.startRemoteView(remoteUserId, view, BRTCCloud.BRTCVideoStreamType.BRTC_VIDEO_STREAM_TYPE_SMALL); // 拉取远端用户 remoteUserId 的屏幕分享画面,如果和主画面同时显示,需要配置不同的View对象 //this.client.startRemoteView(remoteUserId, view, BRTCCloud.BRTCVideoStreamType.BRTC_VIDEO_STREAM_TYPE_SUB); // 开始接收指定用户的远端视频流 this.client.muteRemoteVideoStream(remoteUserId, false)
通过调用 stopRemoteView 接口,您可以停止播放某一个远端用户的视频。
this.client.muteRemoteVideoStream(remoteUserId, true) this.client.startRemoteView(remoteUserId, BRTCCloud.BRTCVideoStreamType.BRTC_VIDEO_STREAM_TYPE_BIG);
通过调用 updateRemoteView 接口,您可以在播放中变更 view 对象,这在切换视频渲染控件时非常有用。
// 将 userId 的主路画面切换到一个悬浮的窗口中(假定该小窗口为 myView) this.client.updateRemoteView(remoteUserId, myView, BRTCCloud.BRTCVideoStreamType.BRTC_VIDEO_STREAM_TYPE_BIG)
您可以控制对远端用户的声音和视频的播放,需要通过如下接口获取房间中推流的用户信息、推流的摄像头和麦克风设备状态:
视频状态变化通知
屏幕共享流可用状态通知
// 创建主 client this.client = BRTCCloud.createBRTCloud({appId: this.appId}) this.client .on('peer-joined', uid => { console.log('\n user joined: ' + uid + ', event: peer-joined') // 添加远端用户进入房间处理逻辑 } ) .on('peer-leaved', uid => { console.log('\n user leaved: ' + uid + ', event: peer-leaved') // 添加远端用户退出房间处理逻辑 } ) .on('user-video-available-changed', (uid, videoOn) => { console.log(`\n 用户 ${uid} 视频流 ${videoOn} 可用变动, event: user-video-available-changed`) // 添加用户视频可用/不可用处理逻辑 } ) .on('user-sub-video-available-changed', (uid, videoOn) => { console.log(`\n 用户 ${uid} 订阅视频流 ${videoOn} 可用变动, event: user-sub-video-available-changed`) // 添加用户屏幕共享可用/不可用处理逻辑 } ) .on('user-audio-available-changed', (uid, audioOn) => { console.log(`\n 用户 ${uid} 音频流 ${audioOn} 可用变动, event: user-audio-available-changed`) // 添加用户音频可用/不可用处理逻辑 } )
随着您的业务需求不断深入,您会发现有两种不同的“静音”,虽然他们都叫“静音”,但是实现机制和效果完全不同
订阅音视频流
本文详细介绍如何使用百家云 SDK 订阅和取消订阅远端音视频。
相关函数接口在 electron-sdk 2.0.7 及以上版本支持。
订阅模式
BRTC 提供了自动订阅模式:SDK 会自动播放远端用户的声音和视频,无需您进行额外操作,这是 SDK 的默认行为。建议在一个教室内的人数不要太多,可以节省拉流端的带宽消耗,降低拉流的卡顿率; 或者在同一个教室中人数较多时,使用 muteRemoteAudio、 muteRemoteVideo 手动关闭远端音频、视频流的下载和播放、渲染,也可以降低拉流的卡顿率。
音频流的播放
您可以通过调用接口 muteRemoteAudio 来静音远端用户的声音,之后也可以通过调用接口 muteRemoteAudio 来解除对他的静音。
视频流的播放
您可以通过调用接口 startRemoteView 来显示远端用户的视频画面,但前提是您需要传递给 SDK 一个 view 对象,用来作为承载该用户的视频画面的渲染控件。
startRemoteView 的第一个参数是远端用户的 userId,第二个参数是您需要传递的 view 对象,第三个参数则是远端用户的流类型。其中第三个参数 streamType(流类型) 有三个可选的值,分别是:
注意事项
视频流停止播放
通过调用 stopRemoteView 接口,您可以停止播放某一个远端用户的视频。
变更视频渲染view
通过调用 updateRemoteView 接口,您可以在播放中变更 view 对象,这在切换视频渲染控件时非常有用。
感知房间中远端用户的音视频状态
您可以控制对远端用户的声音和视频的播放,需要通过如下接口获取房间中推流的用户信息、推流的摄像头和麦克风设备状态:
视频状态变化通知
屏幕共享流可用状态通知
三种不同的静音
随着您的业务需求不断深入,您会发现有两种不同的“静音”,虽然他们都叫“静音”,但是实现机制和效果完全不同