功能简介
在视频通话或互动直播中设置视频属性,可以根据用户喜好,调整视频画面的清晰度和流畅度,获得较高的用户体验。
RTC SDK 通过 setVideoEncoderConfiguration 方法来设置视频相关的属性,其中包含视频分辨率、帧率、码率、方向模式等参数。
-
实现方法
在设置视频属性前,请确保你已在项目中实现基本的实时音视频功能。
API 时序图
参考下图时序在你的项目中设置视频属性:
你也可以根据实际场景需要,在合适的时机调用 setVideoEncoderConfiguration 方法:
- 如果想在加入频道前设置视频属性,在 enableVideo 之后、joinChannelByToken 前调用。
- 如果在加入频道后不需要重新设置视频编码属性,还可以在 enableVideo 前调用该方法,以加快首帧出图的时间。
- 加入频道后你也可以调用该方法,实时更新视频的编码属性。
示例代码
// swift // 配置一个 VideoEncoderConfiguration 实例,参数可参考下文中的 API 参考链接 let config = ARVideoEncoderConfiguration(size: size, frameRate: frameRate, bitrate: bitrate, orientationMode: orientationMode, degradationPreference: degradationPreference) rtcKit.setVideoEncoderConfiguration(config)
// objective-c // 配置一个 VideoEncoderConfiguration 实例,参数可参考下文中的 API 参考链接 ARVideoEncoderConfiguration *config = [[ARVideoEncoderConfiguration alloc] initWithSize: size frameRate: frameRate bitrate: bitrate orientationMode: ARVideoOutputOrientationModeAdaptative degradationPreference: ARDegradationMaintainQuality]; [rtcKit setVideoEncoderConfiguration: config];
API 参考
开发注意事项
-
degradationPreference参数设置为 ARDegradationMaintainQuality,表示带宽受限时,降低编码帧率以保证视频质量。此时开发者可以使用 minFrameRate 参数设置当前最低的编码帧率,用于平衡帧率和视频质量。通常来说:
- minFrameRate 较低时,一旦带宽不足,帧率下降幅度较大,画质清晰度受影响比较小
- minFrameRate 较高时,一旦带宽不足,帧率下降幅度有限,画质清晰度受影响比较大
请确保 minFrameRate 的值不超过 frameRate 的值。minFrameRate 的系统默认值是经过试验且能满足一般情况下的需求,我们建议用户不要修改该参数的默认值。
-
如果用户加入频道后不需要重新设置视频编码属性,建议在 enableVideo 前调用 setVideoEncoderConfiguration ,可以加快首帧出图的时间。
-
RTC SDK 会根据实时网络环境,对设置的参数作自适应调整,通常会下调参数。
-
通常的,直播场景下需要较大码率来提升视频质量。因此 anyRTC 建议将直播码率值设为通信值的 2 倍。详情请参考设置码率。
-
直播场景通常需要更大的码率来支持清晰度,因此建议主播使用较稳定的网络。
-
本文中各参数的设置可能会影响计费,详情请参考计费。
常用分辨率、帧率和码率
通常来讲,视频参数的选择要根据产品实际情况来确定,比如,如果是一对一 ,老师和学生的窗口比较大,要求分辨率会高一点,随之帧率和码率也要高一点;如果是一对四, 老师和学生的窗口都比较小,分辨率可以低一点,对应的码率帧率也会低一点,以减少编解码的资源消耗和缓解下行带宽压力。一般可按下列场景中的推荐值进行设置。
- 二 人视频通话场景:
- 分辨率 320 x 240、帧率 15 fps、码率 200 Kbps
- 分辨率 640 x 360、帧率 15 fps、码率 400 Kbps
- 多人视频通话场景:
- 分辨率 160 x 120、帧率 15 fps、码率 65 Kbps
- 分辨率 320 x 180、帧率 15 fps、码率 140 Kbps
- 分辨率 320 x 240、帧率 15 fps、码率 200 Kbps
如果你希望自定义视频参数,比如调高码率以保证视频质量,也可以参考下表对各参数进行自定义设置。
下表中,分辨率 1920 x1080 及以上的视频属性仅适用于 macOS 平台。
分辨率 (宽 x 高) 帧率 (fps) 基准码率 (Kbps,适用于通信) 直播码率 (Kbps,适用于直播) 160 x 120 15 65 130 120 x 120 15 50 100 320 x 180 15 140 280 180 x 180 15 100 200 240 x 180 15 120 240 320 x 240 15 200 400 240 x 240 15 140 280 424 x 240 15 220 440 640 x 360 15 400 800 360 x 360 15 260 520 640 x 360 30 600 1200 360 x 360 30 400 800 480 x 360 15 320 640 480 x 360 30 490 980 640 x 480 15 500 1000 480 x 480 15 400 800 640 x 480 30 750 1500 480 x 480 30 600 1200 848 x 480 15 610 1220 848 x 480 30 930 1860 640 x 480 10 400 800 1280 x 720 15 1130 2260 1280 x 720 30 1710 3420 960 x 720 15 910 1820 960 x 720 30 1380 2760 1920 x 1080 15 2080 4160 1920 x 1080 30 3150 6300 1920 x 1080 60 4780 6500 2560 x 1440 30 4850 6500 2560 x 1440 60 6500 6500 3840 x 2160 30 6500 6500 3840 x 2160 60 6500 6500