如何使用Agora SDK设置视频分辨率、帧率与码率?
Agora视频SDK调整视频分辨率、帧率、码率配置方法
Agora视频SDK支持两种视频编码参数配置方式,你可以根据业务需求选预设档位快速接入,也可以完全自定义参数,所有初始配置必须在加入频道前调用才可全局生效,频道内也支持动态调整参数无需退出重进。
1. 预设Video Profile快速配置
SDK内置了多套经过适配的标准档位,每个档位对应固定的分辨率、帧率、基准码率,不需要手动计算参数,适合常规场景快速接入。
各端核心调用示例:
- Android
// 传入对应预设枚举即可,示例为360P档位:对应640*360分辨率、15fps帧率、400Kbps基准码率 // 第二个参数为宽高交换开关,竖屏场景传true,横屏传false mRtcEngine.setVideoProfile(Constants.VIDEO_PROFILE_360P, false);
- iOS
// 示例为720P档位:对应1280*720分辨率、15fps帧率、1130Kbps基准码率 agoraKit.setVideoProfile(.profile720P, swapWidthAndHeight: false)
- Web
// 示例为480P 15帧档位 client.setVideoProfile('480p_1');
2. 自定义全参数配置
如果预设档位无法满足业务需求(比如需要特殊分辨率、更高帧率、指定码率),可以用自定义编码配置接口,单独设置三个核心参数:
参数取值参考:
- 分辨率宽高建议设为16的倍数,最低支持160120,最高支持4K(38402190)
- 常规场景帧率建议设为15/24/30fps,运动类场景最高可设为60fps
- 码率可参考同分辨率预设档位的基准值上下浮动,最低不低于基准值的50%,最高不超过基准值的2倍,避免带宽浪费或画面模糊
各端自定义配置示例:
- Android
// 构建配置对象 VideoEncoderConfiguration config = new VideoEncoderConfiguration( new VideoDimensions(1280, 720), // 自定义分辨率:1280*720 VideoEncoderConfiguration.FRAME_RATE.FRAME_RATE_FPS_24, // 自定义帧率:24fps VideoEncoderConfiguration.STANDARD_BITRATE, // 码率模式:标准模式下SDK会根据分辨率帧率自动计算适配码率 VideoEncoderConfiguration.ORIENTATION_MODE.ORIENTATION_MODE_ADAPTIVE // 方向自适应 ); // 如需手动指定固定码率,直接给bitrate赋值即可,单位为Kbps,示例设为1500Kbps config.bitrate = 1500; // 生效配置 mRtcEngine.setVideoEncoderConfiguration(config);
- iOS
let config = AgoraVideoEncoderConfiguration( size: CGSize(width: 1920, height: 1080), // 自定义分辨率:1080P frameRate: .fps30, // 自定义帧率:30fps bitrate: AgoraVideoBitrateStandard, orientationMode: .adaptative ) // 手动指定码率为2500Kbps config.bitrate = 2500 agoraKit.setVideoEncoderConfiguration(config)
- Web
client.setVideoEncoderConfiguration({ width: 640, height: 480, frameRate: 15, bitrate: 500 // 自定义码率500Kbps });
3. 实际使用注意事项
- 初始参数配置必须在
joinChannel调用前完成,否则首次进频道会默认加载360P档位配置 - 频道内需要动态调整参数时,不需要退出频道,直接调用
setVideoEncoderConfiguration接口即可,新参数会在1-2秒内生效 - 多人通话场景不建议设置过高的分辨率和码率,否则会触发SDK内置的带宽自适应策略,实际生效的参数可能低于设置值
- 竖屏场景不需要手动把分辨率设为高大于宽的数值,打开宽高交换开关或者使用方向自适应模式即可自动适配
内容的提问来源于stack exchange,提问作者Shaocheng Yang
相关产品推荐
相关产品推荐

