关于动态码率变化的问题
冰山之海 2014-05-20 11:35:33 我在做一个项目,根据网速调整码率,中间不re open 编码器(编码器用的是x264)
我用的方式是 ABR + 改变 i_bitrate /i_vbv_max_bitrate /i_vbv_buffer_size , h264是baseline的
在网络变化时,实时修改bitrate,再调用 x264_encoder_reconfig 接口, 测试下来发现, 高码率实时转低码率时没有问题,但低码率转高码率时有问题。
测试一段yuv420数据 , 如下(4种可能):
2048 kbps 生成文件 6M
512 kbps 生成文件 1M
2048 kbps ->(中途调整) 512kbps 4M //正确的
512kbps ->(中途调整) 2048 kbps 1M (编出来的文件还是 512kbps的)
代码如下:
[code=c
]else if(0 == strcmp(key,"bitrate"))
{
x264_param->param_.rc.i_bitrate = value;
x264_param->param_.rc.i_vbv_max_bitrate = value*1.2;
x264_param->param_.rc.i_vbv_buffer_size = value;
if(x264_param->param_.rc.i_bitrate)
x264_param->param_.rc.i_rc_method = X264_RC_ABR;
else
x264_param->param_.rc.i_rc_method = X264_RC_CRF;
}[/code]