没有合适的资源?快使用搜索试试~ 我知道了~
首页FFmpeg X264编码参数表
资源详情
资源评论
资源推荐
FFmpeg X264 编码参数
1. 目录
1. 码率控制 ................................................................................................................................... 1
2. X264 的 preset 和 tune ............................................................................................................. 2
3. 编码延时建议 ........................................................................................................................... 2
4. ffmpeg 编码参数和 x264 参数对照 ........................................................................................ 3
5. x264 参数说明 .......................................................................................................................... 6
视频质量分析 音视频图像测试工具 QQ 3040963362
2. 码率控制
X264 提供三种码率控制的方式:bitrate, qp, crf。这三种方式是互斥的,使用时设置其
中之一即可。
(1)bitrate
x264 会尝试把给定的位元率作为整体平均值来编码。这意味着最终编码文件的大小是已知
的,但最终的品质未知。此选项通常与-pass(两阶段编码)一起使用。
注意,ffmpeg 中设置 bitrate 的具体参数为 bit_rate,单位是 bits/s(x264 里面对应参数 i_bitrate
的单位则是 kbits/s, 1kbits 为 1000bits 而非 1024bits).
(2)qp
使用 qp 选项时,表示 P 帧的量化值为 qp。I 帧和 B 帧的量化值则是从--ipratio 和--pbratio 中
取得。可使用默认参数,也可自己设定。使用 qp 模式,即固定量化值,意味着停用弹性量
化(aq_mode)。
当 qp 为 0 时,为无损编码。
(3)crf
固定位元率系数,Constant Ratefactor,
可用的值从 1 到 51,越小编码质量越好,码率越高。一般使用 16 到 24,可以为浮点。(crf
并不是恒定质量的方式,同一片子同一 crf 值,其他参数不同可能码率和质量差较大,不同
的片子之间就更没有可比性了)
此模式把某个“质量”作为编码目标,根据片子质量自动分配码率的 vbr(Variable Bit Rate
动态比特率)。X264 中构想是让 crf n 提供与 qp n 相当的视觉品质,但编码文件更小一些。
CRF 是借由降低“较不重要”帧的品质来达到此目的。在此情况下,“较不重要”是指在复
杂或高动态场景的帧,其品质不是很耗费位元数就是不易察觉,所以会提高它们的量化值。
从这些帧里所节省下来的位元数被重新分配到可以更有效利用的帧。
当 crf 为 0 时,与 qp 0 相同,实现无损编码。
3. X264 的 preset 和 tune
鉴于 x264 的参数众多,各种参数的配合复杂,为了使用者方便,x264 建议如无特别需
要可使用 preset 和 tune 设置。这套开发者推荐的参数较为合理,可在此基础上在调整一些
具体参数以符合自己需要,手动设定的参数会覆盖 preset 和 tune 里的参数。
--preset 的参数主要调节编码速度和质量的平衡,有 ultrafast、superfast、veryfast、faster、
fast、medium、slow、slower、veryslow、placebo 这 10 个选项,从快到慢。
--tune 的参数主要配合视频类型和视觉优化的参数,或特别的情况。如果视频的内容符
合其中一个可用的调整值又或者有其中需要,则可以使用此选项,否则建议不使用(如 tune
grain 是为高比特率的编码而设计的)。tune 的值有:
film: 电影、真人类型;
animation: 动画;
grain: 需要保留大量的 grain 时用;
stillimage: 静态图像编码时使用;
psnr: 为提高 psnr 做了优化的参数;
ssim: 为提高 ssim 做了优化的参数;
fastdecode: 可以快速解码的参数;
zerolatency:零延迟,用在需要非常低的延迟的情况下,比如电视电话会议的编码。
4. 一些编码建议
编码延时
降低 x264 的延时是可能的,但是会降低质量。若需零延时,设置--tune zerolatency。若你可
以接受一点儿小延时(如小于 1 秒),最好还是允许延时。下列步骤可以降低延迟,当延迟足
够小时,就别再进行后续步骤了:
1. 从初始值开始
2. 关闭 sync-lookahead(设置用于线程预测的帧缓存大小。最大值是 250.在第二遍及更
多遍编码或基于分片线程时自动关闭)
3. 降低 rc-lookahead,但别小于 10(设定 mb-tree 位元率控制和 vbv-lookahead 使用的帧数)
4. 降低 threads(比如从 12 降到 6)
5. 使用切片线程(sliced threads)
6. 禁用 rc-lookahead
7. 禁用 b-frames
8. 实在不行,就用--tune zerolatency
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;(使用宏块树位
元率控制会改善整体压缩率)
x264 线程
x264 起多少个线程比较好 ?
建议线程数:
1、2、4、8
测试结论:
1、更多的线程会消耗更多总 CPU 时间片,因此在长期满载的机器上不宜使用多线程。
2、获得的时间收益随线程增多呈递减趋势,8 线程以后尤为明显。
3、PNSR 下降随线程数增加呈抛物递增趋势,16 线程增加到 24 线程 PSNR 时下降了 0.6 之
巨。
4、设置 threads=auto 时,线程数为逻辑 CPU 个数的 1.5 倍。
x264 各类型帧的大小及编码耗时
注:作参考,未必属实。
I帧、B帧、P帧都极大地受编码参数的影响。
通常情况下:
h264编码的帧由大到小依次为:
I > P > B
(互相之间约有5倍的差距)
x264的编码耗时由长到短依次为:
P > B > I
通常而言,较小的帧因为帧内压缩计算量(deblock、cabac等)小,所以耗时相对短。
P帧的编码耗时长是因为帧间压缩(宏块寻找、运动补偿等)耗时长所以提高了总体耗时。
另外:可以修改x264中的x264_slices_write函数来测量不同类型帧的编码耗时。
5. ffmpeg 编码参数和 x264 参数对照
下面表中涉及的参数直接在 AVCodecContext 结构中设置:
FFmpeg option
x264 option
Code
Console
Console
Code
gop_size
-g <frames>
–keyint
i_keyint_max
bit_rate
-b <bits per second>
–bitrate
rc.i_bitrate
rc_buffer_size
-bufsize <bits>
–vbv-bufsize
rc.i_vbv_buffer_size
rc_max_rate
-maxrate <bits>
–vbv-maxrate
rc.i_vbv_max_bitrate
max_b_frames
-bf <int>
–bframes
i_bframe
keyint_min
-keyint_min <int>
–min-keyint
i_keyint_min
scenechange_threshold
-sc_threshold <int>
–scenecut
i_scenecut_threshold
qmin
-qmin <int>
–qpmin
rc.i_qp_min
qmax
-qmax <int>
–qpmax
rc.i_qp_max
max_qdiff
-qdiff <int>
–qpstep
rc.i_qp_step
qcompress
-qcomp <float>
–qcomp
rc.f_qcompress
qblur
-qblur <float>
–qblur
rc.f_qblur
Refs
-refs <int>
–ref
i_frame_reference
me_method
-me_method
<epzs,hex,umh,full>
–me
analyse.i_me_method
merange
-me_range <int>
–merange
analyse.i_me_range
me_subpel_quality
-subq <int>
–subme
analyse.i_subpel_refine
trellis
-trellis <0,1,2>
–trellis
analyse.i_trellis
noise_reduction
-nr <int>
–nr
analyse.i_noise_reductio
n
level
-level <int>
–level
i_level_idc
bit_rate_tolerance
-bt <bits>
–ratetol = -bt / -b
rc.f_rate_tolerance
rc_initial_buffer_occupan
cy
-rc_init_occupancy
<bits>
–vbv-init =
-rc_init_occupancy /
-bufsize
rc.f_vbv_buffer_init
b_quant_factor
-b_qfactor <float>
–pbratio
rc.f_pb_factor
chromaoffset
-chromaoffset <int>
–chroma-qp-offset
analyse.i_chroma_qp_off
set
thread_count
-threads <int>
–threads
i_threads
me_cmp
-cmp
<-chroma/+chroma>
chroma-me
analyse.b_chroma_me
thread_type
thread_type
sliced_threads
b_sliced_threads
AVCodecContext结构中priv_data可设置的参数见下表:
priv_data(即 X264Context option)
preset
tune
profile
fastfirstpass
level
stats
wpredp
x264opts
crf
crf_max
cqp
aq_mode
aq_strength
psy
psy_rd
rc_lookahead
weightb
weightp
ssim
intra_refresh
b_bias
b_pyramid
mixed_refs
dct8x8
fast_pskip
aud
mbtree
deblock
cplxblur
partitions
direct_pred
剩余22页未读,继续阅读
mazhitong1227
- 粉丝: 314
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2