关于动态码率变化的问题
我在做一个项目,根据网速调整码率,中间不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]
我用的方式是 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]
...全文
相关推荐
HLS协议标准
当网络条件变化时,客户端可以无缝切换到不同质量的流,确保播放的连续性和稳定性。4.
基于X264的动态帧率与动态码率调整的实现
1、动态帧率的实现 1.1 实现思路 依据动态调整因子(由网络状态,CPU状态、程序状态等组成), 计算出当前帧的可用码率,再在时间轴上动态调用x264的API实现对YUV数据帧的编码, 然后对编码帧打上非固定的动态时间戳, 从而实现了码率不变,帧率动态调整技术, 达到: 码率(清晰度)不变,流畅度变化的效果----即清晰度优先设置; 1.2 如何指定编码成关键帧 AVFrame* _v_frm; _v_frm->key_frame = key_frame; if (key_fra
基于无线网络环境移动流媒体码率自适应研究
在校园无线网络环境中,流媒体视频服务面临着诸多挑战,尤其是如何在不断变化的网络条件下确保视频播放的流畅性和用户体验。本文重点研究了流媒体视频码率自适应技术,旨在解决这一问题。
移动直播的关键技术优化.pdf
优化措施包括动态码率调整,根据客户端和网络状况及时切换码率,以及通过多码流切换来应对带宽变化带来的卡顿问题。3. 延时优化:延时是直播中的一个关键指标,降低延时可以提升用户的互动体验。
水下声通信异步全速率协作传输
此外,文章还提到一种动态码率自动重传请求(ARQ)协议,该协议可以在水下通信中有效解决链路质量波动和中继节点的动态变化问题,通过自动调整传输的码率来确保数据包的正确传输。


多媒体/流媒体开发
