webrtc中的代码:
cfg_.rc_dropframe_thresh = (!disable_frame_dropping_ && encoder_settings_.GetFrameDropEnabled()) ? 30 : 0;
https://chromium.googlesource.com/webm/libvpx/+/master/vpx/vpx_encoder.h#399
参数定义
- 参数名称:
rc_dropframe_thresh
- 数据类型:
unsigned int
- 所属结构体:
vpx_codec_enc_cfg
功能描述
rc_dropframe_thresh
是一个用于控制时间重采样(temporal resampling)的参数。如果编码器支持,该参数允许编码器通过丢弃帧(drop frames)来达到目标数据率(target data rate)。这种策略可能会导致编码视频中出现时间上的不连续性,播放时可能会出现卡顿。这种折衷在某些应用中是可以接受的,但在许多应用中是不被允许的。在这些情况下,可以禁用该功能。
参数具体作用
- 丢帧机制:当目标数据缓冲区(target data buffer)的满度低于该阈值所描述的百分比时,编码器将丢弃帧。
- 禁用丢帧:将该阈值设置为
0
可以禁用丢帧功能。
使用场景
- 启用丢帧:在需要严格控制数据率并且可以接受播放时卡顿的情况下,可以启用丢帧机制,通过设置适当的阈值来允许丢帧。
- 禁用丢帧:在要求视频播放流畅、不出现卡顿的应用场景中,可以将阈值设置为
0
,以禁用丢帧功能。
注意事项
- 支持的编码器:所有 vpx VPx 编码器(如 VP8、VP9)都支持该功能。
- 其他编码器:对于其他编码器,需查阅相关文档以确定是否支持该功能。
通过合理配置 rc_dropframe_thresh
,可以在视频质量和数据率控制之间找到平衡,以适应不同的应用需求。