正在进行安全检测...

发布时间:2023-10-07 10:21:00

FFmpegX264编码参数


1.目录
1.2.3.4.5.

码率控制...................................................................................................................................1X264presettune.............................................................................................................2编码延时建议...........................................................................................................................2ffmpeg编码参数和x264参数对照........................................................................................3x264参数说明..........................................................................................................................6
2.码率控制
X264提供三种码率控制的方式:bitrate,qp,crf。这三种方式是互斥的,使用时设置其中之一即可。

1bitrate
x264会尝试把给定的位元率作为整体平均值来编码。这意味着最终编码文件的大小是已知的,但最终的品质未知。此选项通常与-pass(两阶段编码)一起使用。注意,ffmpeg中设置bitrate的具体参数为bit_rate单位是bits/sx264里面对应参数i_bitrate的单位则是kbits/s,1kbits1000bits而非1024bits.

2qp
使用qp选项时,表示P帧的量化值为qpI帧和B帧的量化值则是从--ipratio--pbratio取得。可使用默认参数,也可自己设定。使用qp模式,即固定量化值,意味着停用弹性量化(aq_mode
qp0时,为无损编码。

3crf
固定位元率系数,ConstantRatefactor
可用的值从151,越小编码质量越好,码率越高。一般使用1624,可以为浮点。(crf并不是恒定质量的方式,同一片子同一crf值,其他参数不同可能码率和质量差较大,不同的片子之间就更没有可比性了
此模式把某个“质量”作为编码目标,根据片子质量自动分配码率的vbrVariableBitRate动态比特率)X264中构想是让crfn提供与qpn相当的视觉品质,但编码文件更小一些。CRF是借由降低“较不重要”帧的品质来达到此目的。在此情况下,“较不重要”是指在复杂或高动态场景的帧,其品质不是很耗费位元数就是不易察觉,所以会提高它们的量化值。
从这些帧里所节省下来的位元数被重新分配到可以更有效利用的帧。crf0时,与qp0相同,实现无损编码。

3.X264presettune鉴于x264的参数众多,各种参数的配合复杂,为了使用者方便,x264建议如无特别需要可使用presettune设置。这套开发者推荐的参数较为合理,可在此基础上在调整一些具体参数以符合自己需要,手动设定的参数会覆盖presettune里的参数。

--preset的参数主要调节编码速度和质量的平衡,ultrafastsuperfastveryfastfasterfastmediumslowslowerveryslowplacebo10个选项,从快到慢。

--tune的参数主要配合视频类型和视觉优化的参数,或特别的情况。如果视频的内容符合其中一个可用的调整值又或者有其中需要,则可以使用此选项,否则建议不使用(如tunegrain是为高比特率的编码而设计的)tune的值有:film电影、真人类型;animation动画;
grain需要保留大量的grain时用;stillimage静态图像编码时使用;
psnr为提高psnr做了优化的参数;ssim为提高ssim做了优化的参数;fastdecode可以快速解码的参数;
zerolatency:零延迟,用在需要非常低的延迟的情况下,比如电视电话会议的编码。

4.一些编码建议
编码延时
降低x264的延时是可能的,但是会降低质量。若需零延时,设置--tunezerolatency。若你可以接受一点儿小延时(如小于1,最好还是允许延时。下列步骤可以降低延迟,当延迟足够小时,就别再进行后续步骤了:
1.从初始值开始
2.关闭sync-lookahead(设置用于线程预测的帧缓存大小。最大值是250.在第二遍及更多遍编码或基于分片线程时自动关闭
3.降低rc-lookahead,但别小于10(设定mb-tree位元率控制和vbv-lookahead使用的帧数4.降低threads(比如从12降到65.使用切片线程(slicedthreads

正在进行安全检测...

相关推荐