在视频通话或直播场景中,如果多个用户同时发流,由于设备性能消耗和网络流量的上升,可能带来比较大的体验下降。
本文展示如何使用声网 RTC SDK 实现多人视频通话或直播,以及相关的集成注意事项。
多人视频通信或直播场景下,为降低带宽占用、确保通话流畅,声网建议所有发流端开启双流模式,接收端设置 1-N 订阅模式,即订阅一路大流和 N 路小流。
在实现如下步骤前,请确保已在你的项目中实现基本的实时音视频通信功能。
各发流端在加入频道前或者后,都可以调用 enableDualStreamMode
方法开启双流模式。开启后,SDK 会在发送视频流的同时,额外发送一路分辨率低、码率低的视频流。其中,原视频流也称为大流,分辨率和码率更低的那路流则为小流。
接收端再调用 setRemoteVideoStreamType
方法,将订阅的一路视频流设为大流,其它路视频流均设置为小流。
uid
作为接收端订阅小流。为保证通信流畅,声网建议你联系技术支持自定义小流的视频属性,防止因小流码率过高而造成带宽压力。
setupRemoteVideo
方法,将该用户的 view
设为空,app 即可彻底释放该用户占用的 view
。如果你没有自定义小流视频属性,SDK 会根据大流的视频属性自动设置小流的视频属性。你可以参考本节了解大小流视频属性的默认对应关系。
通信场景下,小流的默认视频属性遵循以下规则:
下表展示直播场景时,不同的大流宽高比下,小流默认的分辨率、帧率、码率。
大流宽高比 | 小流分辨率(宽 × 高) | 小流帧率 | 小流码率 |
---|---|---|---|
1:1 | 160 × 160 | 5 | 68 |
3:4 | 120 × 160 | 5 | 45 |
4:3 | 160 × 120 | 5 | 45 |
9:16 | 108 × 192 | 5 | 50 |
16:9 | 192 × 108 | 5 | 50 |
其他宽高比 | 宽高中的较大值取 160,较小值根据大流宽高比计算得出 | 5 | 68 |
你也可以参考下表,了解主流视频大流属性下,默认的小流属性,各数值依次表示视频宽 × 高、帧率、码率。
通信场景下大流属性 | 通信场景下默认的小流属性 |
---|---|
320 × 240, 15, 200 | 144 × 108, 5, 20 |
640 × 360, 15, 400 | 288 × 162, 5, 40 |
640 × 480, 15, 500 | 288 × 216, 5, 50 |
1280 × 720, 15, 1130 | 288 × 162, 5, 113 |
240 × 320, 15, 200 | 108 × 144, 5, 20 |
240 × 320, 15, 200 | 108 × 144, 5, 20 |
360 × 640, 15, 400 | 164 × 288, 5, 40 |
480 × 640, 15, 500 | 216 × 288, 5, 50 |
720 × 1280, 15, 1130 | 164 × 288, 5, 113 |
直播场景下大流属性 | 直播场景下默认的小流属性 |
---|---|
320 × 240, 15, 350 | 160 × 120, 5, 45 |
640 × 360, 15, 650 | 192 × 108, 5, 50 |
640 × 480, 15, 800 | 160 × 120, 5, 45 |
1280 × 720, 15, 1600 | 192 × 108, 5, 50 |
240 × 320, 15, 350 | 120 × 160, 5, 45 |
360 × 640, 15, 650 | 108 × 192, 5, 50 |
480 × 640, 15, 800 | 120 × 160, 5, 45 |
720 × 1280, 15, 1600 | 108 × 192, 5, 50 |
本节提供声网推荐的大小流视频属性。下表视频属性中的数值依次表示视频宽 × 高、帧率、码率。
频道场景 | 视频流类型 | 设备系统 | 推荐的视频属性 |
---|---|---|---|
通信 | 大流 | macOS,Windows | 640 × 480, 15, 500 |
Android,iOS | 640 × 360, 15, 400 | ||
小流 | macOS,Windows | 320 × 180, 7, 75 | |
Android,iOS | 160 × 90, 7, 45 | ||
直播 | 大流 | macOS,Windows | 640 × 480, 15, 800 |
Android,iOS | 640 × 360, 15, 650 | ||
小流 | macOS,Windows | 320 × 180, 7, 126 | |
Android,iOS | 160 × 90, 7, 64 |
实际场景中,不同用户设备、不同用户网络情况、不同应用服务所在地区、不同用户需求均会影响你使用何种大小流视频属性。因此,如果上表不能满足你的需求,请联系技术支持咨询最适合你的大小流视频属性。