在视频通话或直播场景中,如果多个用户同时发流,由于设备性能消耗和网络流量的上升,可能带来比较大的体验下降。
本文展示如何使用 Agora RTC SDK 实现多人视频通话或直播,以及相关的集成注意事项。通过合理的集成方式,Agora 可以支持多达 17 人同时发视频流。
多人视频通信或直播场景下,为降低带宽占用、确保通话流畅,Agora 建议所有发流端开启双流模式,接收端设置 1-N 订阅模式,即订阅一路大流和 N 路小流。
在实现如下步骤前,请确保已在你的项目中实现基本的实时音视频通信功能。
成功调用 Stream.init
方法后,各发流端调用 enableDualStreamMode
方法开启双流模式。开启后,SDK 会在发送视频流的同时,额外发送一路分辨率低、码率低的视频流。其中,原视频流也称为大流,分辨率和码率更低的那路流则为小流。
对于 v3.1.0 版本及之后的 Web SDK,小流的视频属性默认值固定为分辨率(宽 × 高) 160 × 120,码率 50 Kbps,帧率 15 fps。在 v3.1.0 之前的版本中,SDK 会根据大流的视频属性设置默认的小流视频属性。
接收端再调用 setRemoteVideoStreamType
方法,将订阅的一路视频流设为大流,其它视频流均设置为小流。
如果你不想要使用默认的小流视频属性,还可以调用Client.setLowStreamParameter
自定义小流参数,防止因小流码率过高而造成带宽压力。
switchStream = function (){
if (highOrLow === 0) {
highOrLow = 1
console.log("Set to low");
}
else {
highOrLow = 0
console.log("Set to high");
}
client.setRemoteVideoStreamType(stream, highOrLow);
}
完成设置后,调用Client.publish
方法发布本地流,调用Client.subscribe
方法订阅远端流。
对于 v3.1.0 之前的版本,SDK 会根据大流的视频属性自动设置小流的视频属性。参考下表了解不同的大流视频属性下对应的小流视频属性。
大流视频参数 | 小流视频参数 |
---|---|
|
90P_1 |
|
120P_3 |
|
120P_1 |
|
120P_1 |
|
120P_3 |
各视频属性对应的视频分辨率、帧率和码率请参考 API 文档。