功能简介
在视频通话或互动直播中设置视频属性,可以根据用户喜好,调整视频画面的清晰度和流畅度,获得较高的用户体验。
anyRTC SDK 通过 setVideoEncoderConfiguration
方法来设置视频相关的属性,其中包含视频分辨率、帧率、码率、方向模式等数据。
实现方法
在设置视频属性前,请确保你已在项目中实现基本的实时音视频功能。
初始化 IRtcEngine
后,你可以在需要时调用 setVideoEncoderConfiguration
来设置视频属性,并在该方法中设置你想要的分辨率、帧率、码率、方向等参数。
API 时序图
参考下图在你的项目中设置视频属性:
你也可以根据实际场景需要,在合适的时机调用 setVideoEncoderConfiguration
方法:
- 如果想在加入频道前设置视频属性,在
enableVideo
之后、joinChannel
前调用。 - 如果在加入频道后不需要重新设置视频编码属性,还可以在
enableVideo
前调用该方法,以加快首帧出图的时间。 - 加入频道后你也可以调用该方法,实时更新视频的编码属性。
示例代码
// 配置一个 VideoEncoderConfiguration 实例,参数可参考下文中的 API 参考链接
// 发送视频流宽和高,交换不影响
VideoEncoderConfiguration (lpVideoConfig(640, 360),
// 发送视频帧率
FRAME_RATE_FPS_15,
// 发送视频码率 kbps
800,
// 输出视频的方向模式
ORIENTATION_MODE_ADAPTIVE
// 带宽受限时,视频编码降级偏好;MAINTAIN_QUALITY 表示带宽受限时,降低帧率以保证视频质量
MAINTAIN_QUALITY
);
lpArEngine->setVideoEncoderConfiguration(lpVideoConfig);
API 参考
开发注意事项
degradationPreference
参数设置为MAINTAIN_QUALITY
,表示带宽受限时,降低编码帧率以保证视频质量。此时开发者可以使用minFrameRate
参数设置当前最低的编码帧率,用于平衡帧率和视频质量。通常来说:minFrameRate
较低时,一旦带宽不足,帧率下降幅度较大,画质清晰度受影响比较小minFrameRate
较高时,一旦带宽不足,帧率下降幅度有限,画质清晰度受影响比较大
请确保 minFrameRate
的值不超过 frameRate
的值。minFrameRate
的系统默认值是经过实验且能满足一般情况下的需求,我们建议用户不要修改该参数的默认值。
- 如果用户加入频道后不需要重新设置视频编码属性,建议在
enableVideo
前调用setVideoEncoderConfiguration
,可以加快首帧出图的时间。 - anyRTC SDK 会根据实时网络环境,对设置的参数作自适应调整,通常会下调参数。
- 通常的,直播场景下需要较大码率来提升视频质量。因此 anyRTC 建议将直播码率值设为通信值的 2 倍。详情请参考设置码率。
- 直播场景通常需要更大的码率来支持清晰度,因此建议主播使用较稳定的网络。
- 本文中各参数的设置可能会影响计费,详情请参考计费。
常用分辨率、帧率和码率
通常来讲,视频参数的选择要根据产品实际情况来确定,比如,如果是一对一,老师和学生的窗口比较大,要求分辨率会高一点,随之帧率和码率也要高一点;如果是一对四, 老师和学生的窗口都比较小,分辨率可以低一点,对应的码率帧率也会低一点,以减少编解码的资源消耗和缓解下行带宽压力。一般可按下列场景中的推荐值进行设置。
- 2 人视频通话场景:
- 分辨率 320*240、帧率 15 fps、码率 200Kbps
- 分辨率 640*360、帧率 15 fps、码率 400Kbps
- 多人视频通话场景:
- 分辨率 160*120、帧率 15 fps、码率 65 Kbps
- 分辨率 320*180、帧率 15 fps、码率 140 Kbps
- 分辨率 320*240、帧率 15 fps、码率 200 Kbps
如果你希望自定义视频参数,比如调高码率以保证视频质量,也可以参考下表对各参数进行自定义设置。
分辨率 (宽 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 |