X264参数之zerolatency的分析
来源:互联网 发布:淘宝话费充值软件 编辑:程序博客网 时间:2024/06/07 20:04
最近在测试服务器的在线转码性能时发现,加入zerolatency之后,转码路数会明显降低。
我们都知道,加入zerolatency的目的是为了降低在线转码的编码延迟,那么,该参数是如何影响到x264的转码性能了呢?
首先,先来看看代码中编码延迟的影响因素:
h->frames.i_delay = max(h->param.i_bframe, h->param.rc.i_lookahead)
+ h->i_thread_frames - 1
+ h->param.i_sync_lookahead
+ h->param.b_vfr_input
设置zerolatency后,相应的参数配置如下:
if( !strncasecmp( s, "zerolatency", 11 ) ) { param->rc.i_lookahead = 0; param->i_sync_lookahead = 0; param->i_bframe = 0; param->b_sliced_threads = 1; param->b_vfr_input = 0; param->rc.b_mb_tree = 0; }
下面我们来看一下zerolatency设置中各个参数的意义:
rc_lookahead: Set number of frames to look ahead for frametype and ratecontrol.
该参数为mb-tree码率控制和vbv-lookahead设置可用的帧数量,最大值为250。对于mbi-tree来说,rc_lookahead值越大,会得到更准确的结果,但编码速度也会更慢,因为编码器需要缓存慢rc_lookahead帧数据后,才会开始第一帧编码,增加编码延时,因此在实时视频通信中将其设置为0。
sync_lookahead: 设置用于线程预测的帧缓存大小,最大值为250。在第二遍及更多遍编码或基于分片线程时自动关闭。sync_lookahead = 0为关闭线程预测,可减小延迟,但也会降低性能。
bframes: I帧和P帧或者两个P帧之间可用的最大连续B帧数量,默认值为3。B帧可使用双向预测,从而显著提高压缩率,但由于需要缓存更多的帧数以及重排序的原因,会降低编码速度,增加编码延迟,因此在实时编码时也建议将该值设置为0。
sliced_threads: 基于分片的线程,默认值为off,开启该方法在压缩率和编码效率上都略低于默认方法,但没有编码延时。除非在编码实时流或者对低延迟要求较高的场合开启该方法,一般情况下建议设为off。
vfr_input: 与force-cfr选项相对应:
OPT("force-cfr") p->b_vfr_input = !atobool(value);vfr_input= 1时,为可变帧率,使用timebase和timestamps做码率控制;vfr_input = 0时,为固定帧率,使用fps做码率控制。
mb_tree: 基于宏块树的码率控制。对于每个MB,向前预测一定数量的帧(该数量由rc_lookahead和keyint中的较小值决定),计算该MB被引用的次数,根据被引用次数的多少决定为该MB分配的量化QP值。该方法会生成一个临时stats文件,记录了每个P帧中每个MB被参考的情况。使用mb_tree的方法能够节约大概30%的码率,但同时也会增加编码延迟,因此实时流编码时也将其关闭。
- X264参数之zerolatency的分析
- x264的参数
- x264的命令行参数
- X264的数据流分析
- x264的nal分析
- 编码器的参数设定 X264
- x264的一些编码参数
- x264比较重要的参数
- X264的时耗分析
- X264的时耗分析
- X264的时耗分析
- X264的时耗分析
- X264的时耗分析
- X264的时耗分析
- X264的时耗分析
- x264参数
- x264代码追踪之x264_macroblock_analyse模块分析
- ffmpeg 和 x264的参数对照
- Servlet之Cookie
- 【SpringMVC-001】idea创建SpringMVC项目傻瓜教程
- 程序打成jar包路径不对、找不到配置文件的解决
- 常用的内排序算法的描述和实现
- 51nod-1831 小C的游戏
- X264参数之zerolatency的分析
- Spring cloud学习 (三)ribbon
- BASE64Decoder 对文件编码解码
- element-ui,后台status状态为1,2,3,转化为中文
- 1035. 插入与归并(25)
- HTTP协议/IIS 原理及ASP.NET运行机制浅析
- 使用cmake进行Android项目的构建
- 仪表盘
- echarts自定义配置(持续更新)