一、函数关系树
X264编码参数动态修改函数调用关系如下图所示:
二、动态码率修改
1、X264只仅支持CBR模式下的码率修改。其他模式不支持。
2、CBR是恒定码率,是ABR的一个特殊应用场景。当x264_param_t->rc->i_bitrate等于x264_param_t->rc->i_vbv_max_bitrate。即目标码率和峰值码率相等时,编码输出的就是恒定码率。
3、所以若想动态修改X264的码率,需要配置参数如下:
- init时:x264_param_t->rc->i_rc_method = X264_RC_ABR
- init和编码时:x264_param_t->rc->i_bitrate = x264_param_t->rc->i_vbv_max_bitrate = target_kbps
- x264_param_t->rc->i_vbv_buffer_size可以根据实际场景配置,配置成3倍的target_kbps效果比较好。
备注:电影电视剧场景,i_vbv_buffer_size要配置3倍i_vbv_max_bitrate。视频会议场景,i_vbv_buffer_size配置成i_vbv_max_bitrate码率恒定,但是视频质量不佳。