使用多人视频场景的优化策略
在视频通话场景中,若多个用户同时发流,由于设备性能消耗和网络流量的上升,可能带来比较大的体验下降。
本章节指导您通过实时音视频 RTC SDK 实现多人视频通话。通过合理的集成方式,最多可支持 17 人同时发视频流。
多人视频通信场景下,为降低带宽占用、确保通话流畅,建议您所有的发流端均开启双流模式,接收端设置 1-N 订阅模式,即订阅一路大流和 N 路小流。
说明 |
---|
双流模式是指实时音视频 RTC SDK 在发送一路视频流的同时,额外发送一路低分辨率、低码率的视频流。其中,原视频流也称为大流,分辨率和码率更低的那路流则称为小流。 |
前提条件
-
已实现基本的实时音视频通信功能。
-
在加入频道前调用
setParameters("{"che.audio.live_for_comm": true}")
,启用针对多人通信场景的优化策略。
操作步骤
步骤一:开启双流模式
各发流端在加入频道前或者后,都可以调用 enableDualStreamMode
方法开启双流模式。开启后,SDK 会在发送视频流的同时,额外发送一路分辨率低、码率低的视频流。其中,原视频流也称为大流,分辨率和码率更低的那路流则为小流。
SDK 会根据大流的视频属性,自动设置小流的默认视频属性。
步骤二:设置订阅流类型
接收端调用 setRemoteVideoStreamType
方法,将订阅的一路视频流设置为大流,其它路视频流均设置为小流。
步骤三:手动设置小流视频属性
为保证通信流畅,建议您调用如下方法自定义小流属性,防止因小流码率过高而造成带宽压力。
说明 |
---|
小流最高可支持分辨率 640px × 480px,帧率 30fps 和码率 1000Kbps。 为保证通信质量,实时音视频 RTC 建议自定义的小流分辨率不超过 320px × 180px,码率不超过 140Kbps,且小流帧率不能超过大流帧率。 |
// 自定义视频小流参数设置:320 px × 180 px, 5 fps, 140 Kbps
setParameters("{\"che.video.lowBitRateStreamParameter\":{\"width\":320,\"height\":180,\"frameRate\":5,\"bitRate\":140}}");
大小流视频属性对应关系
实时音视频 RTC SDK 根据大流的视频属性自动设置小流的视频属性。若您无需手动设置小流视频属性,可以参考如下内容,了解大流和小流视频属性的对应关系。
视频通信大小流对应关系
视频通信场景下,小流的默认规则属性遵循以下规则:
-
小流宽高 = 大流宽高 × 0.45,且最大不超过 288,最小不低于 64,且宽高保持比例
-
小流帧率固定为 5
-
小流码率 = 大流码率 × 0.1
-
小流的宽必须为 4 的倍数,高必须为偶数
主流分辨率大小流视频属性对应关系
您也可以参考下表,了解视频通信场景下主流视频大流属性下,默认的小流属性。各数字依次表示宽 × 高、帧率、码率。
大流属性 | 小流属性 |
---|---|
320 x 240,15,200 |
144 x 108,5,20 |
640 x 360,15,400 |
288 x 162,5,40 |
640 x 480,15,500 |
288 x 216,5,50 |
1280 x 720,15,1130 |
288 x 162,5,113 |
240 x 320,15,200 |
108 x 144,5,20 |
240 x 320,15,200 |
108 x 144,5,20 |
360 x 640,15,400 |
164 x 288,5,40 |
480 x 640,15,500 |
216 x 288,5,50 |
720 x 1280,15,1130 |
164 x 288,5,113 |
注意事项
-
视频属性的单位,若无特别说明,分辨率为 px,帧率为 fps,码率 Kbps。
-
视频双流不适用于屏幕共享的场景。
-
为保证通信质量,建议大流视频分辨率不超过 640 x 480,帧率不超过 15 fps。
-
建议界面布局采用一大多小的窗口布局。即大窗口显示大流的画面,小窗口显示小流的画面。
-
视频通话或直播过程中,若有发流用户离开频道,接收端可以再收到该用户离线的回调后,调用
setupRemoteVideo
方法,将该用户的view
设置为空,APP 即可彻底释放该用户占用的view
。