阿里云RTC服务支持双流(大小流)模式,您可以根据业务需求开启此功能。本文以iOS端为例介绍视频双流的实现方式及规格信息。

实现方式

在多用户视频通信时,您可以通过调用setVideoEncoderConfiguration接口将发布端的视频分辨率和码率适当调低,或调用publishLocalDualStream接口开启双流模式并通过调用setRemoteVideoStreamType接口设置订阅端默认订阅小流,以减少编解码的资源消耗和缓解下行带宽压力。更多信息,请参见设置视频属性

说明 开启双流模式后,RTC SDK在推送视频流时会额外再推送一路低分辨率、低码率的视频流。其中,原视频流称为大流,低分辨率、低码率的视频流称为小流。

双流规格默认对应关系

RTC SDK会根据大流视频的规格自动设置小流视频的默认规格,对应关系如下所示:

大流宽高比(宽∶高) 小流
分辨率(宽 × 高) 码率(单位:Kbps) 帧率(单位:fps)
1∶1 160 × 160 100 10
3∶4 120 × 160 100 10
4∶3 160 × 120 100 10
9∶16 90 × 160 100 10
16∶9 160 × 90 100 10
其他比例 大流宽高比中较大值对应小流分辨率中较大值160,较小值根据比例计算。 100 10
说明 小流视频默认规格遵循以下规则:
  • 小流视频分辨率中较大值固定为160,并且和大流的宽高比一致。
  • 小流视频帧率固定为10 fps。
  • 小流视频分辨率的宽和高必须为偶数。
  • 小流视频码率固定为100 Kbps。

自定义小流规格

如果需要自定义小流视频规格,您可以在创建AliRtcEngine对象时设置入extras参数,例如:设置小流视频分辨率为320 × 180,帧率为5 fps,码率为140 Kbps,对应的extras参数设置如下:

{
  "user_specified_low_bitrate_stream_parameter": {
    "width": 320,
    "height": 180,
    "frameRate": 5,
    "bitRate": 140
  }
}
说明
  • 设置小流视频分辨率时,宽取值范围为[64,640],高取值范围为[64,480]。
  • 设置小流视频帧率大于大流帧率时,小流帧率会自动调整为大流帧率;设置小流视频帧率为0或负数时,自动调整为10。
  • 设置小流视频码率小于最小码率时,实际码率为设置的码率;设置小流视频码率大于最大码率时,实际码率为最大码率。

extras参数详细说明,请参见extras参数配置说明

自定义大流规格

如果需要自定义大流视频规格,您可以根据环境实际带宽大小结合下表中视频分辨率、帧率和码率的对应关系进行设置。

分辨率(宽∶高) 帧率(单位:fps) 码率(单位:Kbps)
最小值 推荐值 最大值(推荐值倍数)
160 × 120 5 10 30 × 3
10 20 55 × 3
15 30 80 × 3
20 40 100 × 3
30 60 130 × 3
120 × 120 5 10 25 × 3
10 17 50 × 3
15 25 70 × 3
20 34 90 × 3
30 50 115 × 3
320 × 180 5 15 65 × 3
10 30 110 × 3
15 45 170 × 3
20 60 220 × 3
30 90 300 × 3
180 × 180 5 10 50 × 3
10 17 70 × 3
15 26 100 × 3
20 34 130 × 3
30 51 180 × 3
240 × 180 5 15 60 × 3
10 30 90 × 3
15 45 130 × 3
20 60 165 × 3
30 90 230 × 3
320 × 240 5 20 100 × 2
10 40 170 × 2
15 60 256 × 2
20 80 320 × 2
30 120 400 × 2
240 × 240 5 15 70 × 2
10 30 100 × 2
15 45 150 × 2
20 60 200 × 2
30 90 256 × 2
424 × 240 5 26 100 × 2
10 53 170 × 2
15 79 260 × 2
20 105 340 × 2
30 158 430 × 2
640 × 360 5 83 200 × 2
10 165 340 × 2
15 248 512 × 2
20 330 600 × 2
30 495 700 × 2
360 × 360 5 30 120 × 2
10 60 180 × 2
15 90 260 × 2
20 120 330 × 2
30 180 400 × 2
480 × 360 5 40 150 × 2
10 80 240 × 2
15 120 350 × 2
20 160 430 × 2
30 240 512 × 2
640 × 480 5 110 200 × 2
10 220 350 × 2
15 330 512 × 2
20 440 600 × 2
30 660 700 × 2
480 × 480 5 83 170 × 2
10 165 260 × 2
15 248 400 × 2
20 330 470 × 2
30 495 600 × 2
840 × 480 5 180 256 × 2
10 360 512 × 2
15 540 610 × 2
20 720 800 × 2
30 1080 930 × 2
1280 × 720 5 400 400 × 1.5
10 800 800 × 1.5
15 1200 1200 × 1.5
20 1600 1600 × 1.5
30 2400 2400 × 1.5
960 × 720 5 250 250 × 1.5
10 500 500 × 1.5
15 750 750 × 1.5
20 1000 1000 × 1.5
30 1500 1500 × 1.5
1920 × 1080 5 500 500 × 1.5
10 1000 1000 × 1.5
15 1500 1500 × 1.5
20 2000 2000 × 1.5
30 3000 3000 × 1.5
2560 × 1440 5 800 800 × 1.5
10 1600 1600 × 1.5
15 2400 2400 × 1.5
20 3200 3200 × 1.5
30 4800 4800 × 1.5
3840 × 2160 5 1000 1000 × 1.5
10 2000 2000 × 1.5
15 3000 3000 × 1.5
20 4000 4000 × 1.5
30 6000 6000 × 1.5
说明
  • 大流视频默认分辨率为640 × 480,帧率为15 fps,码率为512 Kbps。
  • 如果大流为相机流,最高设置分辨率为1920 × 1080,帧率为30 fps。
  • 如果大流为屏幕流,最高设置分辨率为3840 × 2160,帧率为30 fps。
  • 建议您在设置视频规格时不要设置码率,RTC SDK会根据视频的分辨率和帧率设置合适的码率。