(转)x264参数中文详解(X264 Settings)

0php

解释x264命令可选项的用途和使用方法。同执行 x264 --fullhelp 显示顺序。本文主要翻译:mewiki.project357.com/wiki/X264_Settings,同时参考doom9 论坛、Silky Bible、以及其它互联网资料加以注解。

词汇翻译:
macroblock:宏区块。是一种图像压缩的术语。
宏区块是运动预测的基本单位,一张完整的图像(frame)一般会被切割成几个宏区块。h.264 的宏区块大小是可变的,经常使用 16x16 pixels。

帮助
X264 内置帮助文档。运行 x264 时带上 --help、--longhelp 或者 --fullhelp 便可看到帮助信息。三个选项给出的信息一个比一个详细。

输入
使用单一位置参数指定视频源。如:
x264.exe --output NUL C:\input.avs
x264 --output /dev/null ~/input.y4m
当输入是原始 YUY 数据时,必须告诉 x264 分辨率。一样的还要指定帧率:
x264.exe --output NUL --fps 25 --input-res 1280x720 D:\input.yuv 
x264 --output /dev/null --fps 30000/1001 --input-res 640x480 ~/input.yuv


预置 选项
预设的成套选项,方便、好用、少出错。更详细信息参见 x264.exe --fullhelp

Profile
默认值:未设置
限定编码输出流的等级。若是你指定了等级,它将取代所有其它选项,因此使用等级选项能够获得良好的兼容性。但使用等级选项,就没法使用无损压缩(--qp 0 or --crf 0)。
若是你的播放器仅能支持特定等级的话,就须要指定等级选项。大多数播放器支持高等级,就不须要指定等级选项了。
可选项: baseline, main, high.

Preset
默认值: medium
选择预设配置须要综合考虑压缩效果和编码速度。
修改 x264 参数顺序:预设配置先于其它选项。
最好设置为能够接受的 slowest。
可选项: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo.
我的体会:slow, slower, verslow 质量基本至关,slow 略差一点。placebo 反而不如那三个,但速度却慢的多。建议使用 slower。

Tune
默认值: 未设置
对输入内容进行 优化
修改 x264 参数顺序:调优项后于 --preset,但先于其它选项。
若是源内容符合下面的条件,可使用调优,不然就不要用。
可选项: film(胶片电影), animation(动画片), grain(颗粒感很重的), stillimage(静态图像), psnr(信噪比。参见: http://baike.baidu.com/view/1624289.htm), ssim(结构类似性。参见: http://baike.baidu.com/view/1559204.htm), fastdecode(快速解码。主要用于一些低性能的播放设备), zerolatency(低时延。主要用于直播等).

slow-firstpass
默认值: 未设置
--pass 1 选项隐含把下列参数追加到 x264 命令行末尾:
•        --ref 1
•        --no-8x8dct
•        --partitions i4x4 (原本有,继续有;原本无,则没有)
•        --me dia 
•        --subme MIN( 2, subme )
•        --trellis 0
可使用 --slow-firstpass 关闭 --pass 1 这项特性。
注意:使用 --preset placebo 隐含应用 slow-firstpass 选项。
参阅 --pass 选项。


帧类型 选项
“帧”基础知识:
影片能够看做是由一张张连续的图片组成的,每幅图片就是一帧。压缩的视频由3种不一样类型的帧(Intra (I) frames (也叫 key frames),Predictive (P) 和 Bidirectional (B) frames)组成。
特定类型的帧之间能够参考,意思是一幅帧有时仅需保存自身与被参考帧的不一样之处便可。不过参考模式会致使错误延续传播,即 X 帧出错,参考它的 Y帧也会出错,那么参考 Y 帧的 Z 帧也会出错。。。,后果很严重,因此视频里必定要有不能被参考的帧。
I 帧须要包含完整图像信息,因此压缩的少,体积大。在视频播放中,跳跃式快进(快退)时须要 I 帧,有的视频快进后黑屏,就是在新的播放位置尚未找到 I 帧引发的。
P 帧保存自身与 I 帧或其它 P 帧之间的差别。P 帧能够被看成参考帧,它须要包含足够多的信息,因为采用运动补偿压缩技术,P 帧比 I 帧保存的内容少。
B 帧也是保存自身与其它帧之间的差别,它既能够参考它前面的帧也能够参考它后的帧(播放顺序),可是它不能做为参考帧(特殊的"B-frame pyramid" 除外)。H.264 支持"B-frame pyramid",这种特殊的 B 帧能够被另外的连续 B 帧参考,除此以外,B 帧不能被其它帧参考。B 帧的压缩最大,包含的信息最少。
图像质量高、压缩率高的视频就是I、P、B 帧的完美结合。

Keyint
默认值: 250 
设置 x264 输出流中两个IDR 帧(也叫 keyframes 关键帧。IDR英文原意为“瞬间解码刷新”)之间的最大间隔帧数。也能够定义“无限”从而再也不插入非场景转换 IDR 帧。
IDR 帧就像视频流里的‘分隔符’,位于它先后(播放顺序)的帧之间是不能相互参考的。并且 IDR 帧也是 I 帧,所以它也不能参考其它帧。这些特性意味着它们能够做为视频跳跃播放时的新开始点。
通常状况下 I 帧比 P 或 B 帧体积大的多(在低运动场景中经常是10倍或更大),当和低 VBV 设置并用时会给码率控制带来极大的麻烦。关于这种状况,参考 --intra-refresh。
默认设置适合大多数视频。但当用于蓝光、广播、生活录像或其它专业录像时,可能须要较小的 GOP (图像组。一个GOP就是一组连续的画面。)长度(经常为fps 的1倍左右)。
参照: --min-keyint, --scenecut, --intra-refresh

min-keyint
默认值: auto (取 --keyint/10 和 --fps 两个中的最小值)
设置两个 IDR 帧之间的最小间隔帧数。
阅读 --keyint 了解 IDR 帧。很是小的关键帧范围会形成错误放置 IDR 帧(例如:频闪场景)。选项限定在每一个 IDR 帧以后放置 IDR 帧的最小间隔。
min-keyint 最大容许值为 --keyint/2+1
推荐: Default, 或 1倍的framerate.
参照: --keyint, --scenecut

no-scenecut
默认值: 未设置
彻底关闭自适应 I 帧决策。
参照: --scenecut

scenecut
默认值: 40 
设置放置 I 或 IDR 帧的阀值(阅读:场景变换检测)。
x264 为每一个帧计算一个度量来评估它与它前面的帧有多大不一样。假如值小于 scenecut 设定值,意味着发生场景切换。若是此帧与前面最后一个 IDR 帧间隔小于 --min-keyint 就放置一个 I 帧,不然就放置一个 IDR 帧。过大的 scenecut 值会致使产生大量的场景切换。欲详细了解场景切换的比较过程,请参考 http://forum.doom9.org/showthread.php?t=121116
scencecut 设置为0时至关于--no-scenecut。
推荐: Default
参照: --keyint, --min-keyint, --no-scenecut

intra-refresh
默认值: Off 
禁用 IDR 帧,取而代之的是 x264 对位于 --keyint 位置的帧采用宏区块内编码方式。这样作的好处是能够得到比使用 IDR 帧更恒定的帧大小,对要求低时延的视频流更有利。同时也增长了丢包后的视频流恢复能力。这个选项会下降压缩率,所以仅在确有必要时才使用。
我的理解:IDR 帧虽然也是 I 帧,即自己是自解码帧,不须要参考其它帧来解码。可是 IDR 帧内部各宏区块之间是互相参考的,若是传输过程当中某宏区块丢失,会致使整帧没法解码。

Bframes
默认值: 3 
设置 x264 可使用的最大连续 B 帧数量。
若是没有 B 帧,典型的 x264 流的帧类型就像:IPPPPP...PI。若是设置 --bframes 2,两个连续的 P 帧将被 B 帧代替,就像:IBPBBPBPPPB...PI。
除了 B 帧能够参考后面的帧(播放顺序)外,B 帧和 P 帧差很少。向后参考能够极大提升压缩率。B 帧的平均质量由 --pbratio 控制。
有趣的现象:
•        x264 偶尔须要区分两种不一样类型的 B 帧。一个‘B’帧能够参考另外一个用于被其它帧参考的 B 帧(见 --b-pyramid,这里的 ‘b’指的是参考了别的B帧的帧,而 B 不是。假如你看到既‘b’又有‘B’,就是这个意思。当不须要区分的时候,用‘B’表明全部的 B 帧。)
•        欲详细了解 x264 压缩时如何把候选帧肯定为 P 或 B 帧,请参考 http://article.gmane.org/gmane.comp.video.ffmpeg.devel/29064。这种状况下,帧类型看起来就像(播放顺序)(若是 --bframes 3):IBBBPBBBPBPI。
参照: --no-b-adapt, --b-bias, --b-pyramid, --ref, --pbratio, --partitions, --weightb

b-adapt
默认值: 1 
设置放置 B 帧决策算法。控制 x264 如何在 P 或 B 帧之间抉择。
0.关闭。老是选择 B 帧。与老的 no-b-adapt 选项相同。
1. 快速算法,较快的,当 --b-frames 值较大时速度会略微加快。采用这种模式时,基本都会使用 --bframes 16。
2.最优算法,较慢的,当 --b-frames 值较大时速度会大幅度下降。
注:当采用多遍编码时,仅需在决定帧类型的第一遍编码中使用。

b-bias
默认值: 0 
控制用 B 帧代替 P 帧的可能性。值大于0增长采用 B 帧的可能性,小于0则相反。这个数没有度量单位。范围从 -100 到 100。值100不保证都是 P 帧,值-100不保证没有 P 帧(真想没有 P 帧可使用 --b-adapt 0)。
仅当你感受能比 x264 更好的控制码率的时候采用。
参照: --b-frames, --ipratio

b-pyramid
默认值: normal 
容许 B 帧做为其它帧的参考帧。不设置,就只能参考 I 或 P 帧。尽管高质量的 I/P 帧做为参考帧更有价值,但 B 帧也能够做为参考帧。做为参考帧的 B 帧将被量化至 P 帧 和普通 B 帧之间(所谓的半量化)。 --bframes 至少为2时B-pyramid 才开始工做。
压制蓝光时,使用'none' 或 'strict'。
•        none: 不容许 B 帧做为参考帧。
•        strict: 蓝光标准强制性规定:每一个 minigop 中只容许一个 B 帧做为参考帧。
•        normal: 每一个 minigop 中容许任意数量 B 帧做为参考帧。
参照: --bframes, --refs, --no-mixed-refs

open-gop
默认值: none
Open-GOP 是一种提升压缩率的编码技术。有三种模式:
•        none: 关闭
•        normal: 启用
•        bluray: 启用。一个较低效率版本的 Open-GOP,当压制蓝光时 normal 模式不能工做。
一些解码器不彻底支持Open-GOP 流,这就是为何默认是关闭的。你须要测试播放视频流的解码器,或者等到Open-GOP 被广泛支持。
Open-GOP 的解释: http://forum.doom9.org/showthread.php?p=1300124

no-cabac
默认值: 未设置
禁用CABAC (Context Adaptive Binary Arithmetic Coder) 流压缩,转而使用较低效的CAVLC (Context Adaptive Variable Length Coder)。显著下降压缩率(通常为10-20%)和解码能力要求。

ref
默认值: 3 
控制 DPB(Decoded Picture Buffer(已经解码图像缓存))大小。范围为0-16。简单的说,就是每一个 P帧能够在它前面多少帧中选取参考帧(B 帧要少1个或者2个,取决于它们是或否做为参考帧)。最小值是1。
H.264规范限定每一个 level 的 DPB 大小。若是遵照 Level 4.1 规范,720p 和 1080p 视频最大的 refs 值为9和4。
参照: --b-pyramid, --no-mixed-refs, --level

no-deblock
默认值: 未设置
关闭 loop filter(环内滤波)。不推荐。
参照: --deblock

deblock
默认值: 0:0
控制 loop filter(环内滤波。也叫 inloop deblocker),是 H.264 标准的一部分。就平衡编码时间与图像质量来讲它很是有效。
参考  http://forum.doom9.org/showthread.php?t=109747(楼主帖和 akupenguin 的回复)来了解 loop filter 参数如何工做。
注:楼主(*.mp4 guy)的描述有误,仔细看 lovelove 的回复。
参照: --no-deblock

slices
默认值: 0 
设置每帧的分片数量,而且强制矩形分片。
编码蓝光时设为4,除此以外不要使用这个选项,除非你知道你在干什么。
参照: --slice-max-size, --slice-max-mbs.

slice-max-size
默认值: 0
以字节为单位设置切片最大尺寸,包括预估的网络层开销在内。(目前和 --interlaced 不兼容)
参照: --slices

slice-max-mbs
默认值: 0
以宏区块为单位设置切片最大数。(目前和 --interlaced 不兼容)
参照: --slices

tff
开启隔行编码方式,并指定 top field(顶部图场)在先。x264的隔行编码使用 MBAFF,不如逐行编码效率高。所以,只有须要在隔行扫描设备上播放时才开启隔行扫描编码(或者是视频流在送给 x264 之间没法完成反隔行变换)。隐含应用 --pic-struct。

bff
开启隔行编码方式,并指定 bottom field(底部图场)在先。更多信息见 --tff。

constrained-intra
默认值: 未设置
开启强制内部预测,这是 SVC 编码的基本要求。因为 EveryoneTM 放弃了 SVC, 你也能够无视这个选项了。

pulldown
默认值: none 
‘软’胶卷过带(逐行,恒定帧率。之因此叫‘软’是由于大部分胶卷过带是硬件实现的)。更多解释见 http://trac.handbrake.fr/wiki/Telecine。可选项:none, 22, 32, 64, double, triple, euro.
除 none 外其它选项隐含应用 --pic-struct。
Telecine(胶卷过带)和 IVTC(inverse telecine。反胶卷过带)实现方法:
电影本来是 24fps 的,若是要在 NTSC 制式的电视上播放,就须要胶卷过带,在此过程当中,会把影片通过 3:2 pulldown 转为 30fps。
把电影本来的 1 2 3 4 四个帧,拆成 1o 1e 2o 2e 3o 3e 4o 4e,每一个帧拆成奇数扫瞄线组成的奇数图场(Odd Field)和偶数扫瞄线组成的偶数图场(Even Field)。从新组合以下(以 Odd Field First 的顺序)
1o 1e - 2o 2e - 2o 3e - 3o 4e - 4o 4e
[ A ] - [ B ] - [ C ] - [ D ] - [ E ]
每两个 Field 再从新组合成一个帧,就变成 [A][B][C][D][E] 五个帧。这样由本来的 4 张变成 5 张,4*6 = 24 => 5*6 = 30,就能从 24fps 转为 30fps。
理解了胶卷过带,再理解 IVTC 就容易了。IVTC,将 30fps 转回 24fps,这样压缩的画面张数由 30fps 减小为 24fps,少了 20%,等于码率增长 20%,并且画面无交错容易压缩,因此压出来的画质会好不少。

fake-interlaced
默认值: 未设置
把视频流标记为隔行方式,即便它不是隔行方式编码。容许编码 25p 和 30p 蓝光兼容视频流。


码率控制

qp
默认值: 未设置
三种可用的码率控制方法之一。以恒定量化值(Constant Quantizer)方式编码。此选项的参数用于指定 P 帧量化值。I 和 B 帧的量化值由 --ipratio 和 --pbratio 控制。CQ 模式的目标是恒定的量化值,这就意味着最终文件大小不可知(尽管能用一些方法预测)。参数 0 表示无损输出。同等的视觉质量下, qp 比 --crf 产生的文件要大。因为固定量化值的缘故,qp 模式会关闭自适应量化。
本选项与 --bitrate 和 --crf 是互相排斥的,就是三选一的意思。欲详细了解码率控制,参见 http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD。
可使用 --crf 代替 qp,不过 qp 模式不须要预分析会更快一些。
参照: --bitrate, --crf, --ipratio, --pbratio

bitrate
默认值: 未设置
码率控制方法之二。以比特率(bitrate)做为目标的编码方式。最终文件大小可知,但最终图像质量不可知。x264 把给定的比特率做为总平均值来做为目标,也就是说每帧的比特率可能不符合给定的比特率,可是整体平均比特率符合给定的比特率。比特率的单位是 kilobits/sec(8bits = 1字节)。须要注意的是 1 kilobit 是 1000 bits,而不是 1024 位。
这个选项常和 --pass 一块儿用于2遍编码。
本选项与 --qp 和 --crf 是互相排斥的,就是三选一的意思。欲详细了解码率控制,参见 http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD。
参照: --qp, --crf, --ratetol, --pass, --stats

crf
默认值: 23.0
最后的码率控制方法:恒定比例因子。(Constant Ratefactor。也叫恒定质量)。qp 的目标是肯定的量化值,bitrate的目标是肯定的文件大小,crf 的目标是肯定的‘质量’。这个概念就是 crf n 能给人以 qp n 相同的视觉质量,仅仅体积小一些。crf 的单位是“ratefactor”。
crf 依靠下降‘不过重要’帧的质量来达到减少体积的目的。在这里,‘不过重要’是指帧包含复杂或高速运动的场景,在这些地方保持与其它地方相同质量的代价很高 (即耗费比特)且又缺少可视性(就是正常播放的时候看不清楚的意思),就增长它们的量化值(量化值越大图像质量越差)。把节省下的比特用到刀刃上。
crf 比2遍编码方式节省时间,由于它少了一次编码。另外,crf 的最终比特率是不可预测的,即文件大小不可知。使用哪一种码率控制方式取决于你。
本选项与 qp 和 --bitrate 是互相排斥的,就是三选一的意思。欲详细了解码率控制,参见 http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD。
参照: --qp, --bitrate

rc-lookahead
默认值: 40 
设置用于 mb-tree 码率控制和 vbv-lookahead 的帧数。最大容许值为250。
对于 mb-tree,增长帧数能获得更好的结果可是会更慢。mb-tree 的最大值是 rc-lookahead 和 keyint 中的最小数值。
对于 vbv-lookahead,增长帧数会更稳定和精确。vbv-lookahead 的最大值是:MIN(rc-lookahead, MAX(--keyint, MAX(--vbv-maxrate, --bitrate) / --vbv-bufsize * --fps))
参照: --no-mbtree, --vbv-bufsize, --vbv-maxrate
mb-tree 的解释: http://baike.baidu.com/view/3098244.html
vbv 的解释: http://baike.baidu.com/view/1519233.htm
vbv-lookahead 是vbv 预检测。

vbv-maxrate
默认值: 0
设置 vbv 缓存被再充满的最大码率。因为 vbv 缓存充满会形成溢出,为防止溢出发生,视频的最大码率不能超过 vbv-maxrate。
vbv 下降图像质量,仅在确实须要时再使用。
参照: --vbv-bufsize, --vbv-init 和 vbv 编码建议: http://mewiki.project357.com/wik ... stions#VBV_Encoding

vbv-bufsize
默认值: 0 
以 kilobits 为单位设置 vbv 缓存大小。
vbv 下降图像质量,仅在确实须要时再使用。
参照: --vbv-maxrate, --vbv-init 和 vbv 编码建议: http://mewiki.project357.com/wik ... stions#VBV_Encoding

vbv-init
默认值: 0.9 
设置开始播放前 vbv 缓存必须的充满率。
假如小于1,初始填充量为 vbv-init * vbv-bufsize。反之则是单位为 kilobits 的初始填充量数值。
参照: --vbv-maxsize, --vbv-bufsize 和 vbv 编码建议: http://mewiki.project357.com/wik ... stions#VBV_Encoding

crf-max
默认值: 未设置
相似 --qpmax,除了把指定最大量化值改成指定最大比例因子。仅当使用 crf 而且 vbv 有效时起做用。让 x264 即便违反 vbv 约束也不能把比例因子(也叫“质量”)下降到给定值之下。经常使用于定制的流媒体服务器。更多信息参见: http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=81eee062a4ce9aae1eceb3befcae855c25e5ec52
参照: --crf, --vbv-maxrate, --vbv-bufsize

qpmin
默认值: 0
定义最小量化值。量化值越低,输出越接近输入,到某个量化值,输出看起来就和输入同样,尽管并非真的相同。一般没有理由让 x264 在特别宏区块上浪费码流。
当自适应量化开启时(默认开启),提升 qpmin 是不可取的,由于这样会下降帧中平坦背景区域的画面质量。
参照: --qpmax, --ipratio

qpmax
默认值: 51
和 qpmin 相反,定义最大量化值。51是 h.264 规范中能够采用的最大量化值,质量至关低。默认值至关于禁用 qpmax。假如想控制输出的最低质量,也许你会把它设的低一些(30-40是你能设的最低值),但不建议调整它。
参照: --qpmin, --pbratio, --crf-max

qpstep
默认值: 4
设置两帧之间量化值的最大差值。

ratetol
默认值: 1.0
这是一个双用途参数:
•        在 1-pass 编码中,告诉 x265 能够与设定比特率相差百分之几。能够设置为‘inf’来完全关闭码率溢出检测。最低可设为0.01。设的高些有利于 x264 处理影片末尾的复杂场景。单位是%(例如:1.0 就是 1% 的比特率误差)。
许多动做片等,结尾都是火爆场景。但 1-pass 不知道这些,经常会低估影片末尾的码率需求。inf 参数让编码更像 --crf 模式来缓解这个问题,但文件大小会超标。
•        当 vbv 启用时(例如:使用带 --vbv 前缀的选项),这个设置也影响 vbv 的做用强度。设的值越高,vbv 的波动范围就越大,甚至会有突破 vbv 设置极限的可能。由此,度量单位能够是任意的。

ipratio
默认值: 1.40
修改 I 帧量化值比 P 帧量化值的平均增长量。值越大生成的 I 帧质量越高。
参照: --pbratio

pbratio
默认值: 1.30
修改 B 帧量化值比 P 帧量化值的平均减小量。值越大生成的 B 帧质量越低。不能和 mbtree(默认开启)一块儿使用,mbtree 会自动计算 B 帧最佳量化值。
参照: --ipratio

chroma-qp-offset
默认值: 0
给色度的量化值增长一个偏移量。能够是负值。
当开启 psy-rd 和/或 psy-trellis 时,x264 会自动减少偏移量来提升亮度质量,形成色度质量降低。默认从偏移量中减2。
注意:在 q29如下,x264 对亮度和色度以相同量化值进行编码。超过29后,色度量化值的增加率小于亮度,直至亮度达到 q51 和 色度达到 q39。这是 H.264 标准要求的。

aq-mode
自适应量化模式
默认值: 1
不用 AQ,x264 倾向于给缺少细节的场景分配较少的码流。AQ 用来把可用的码流更好的分配给全部的宏区块。此选项用于改变 AQ 从新分配码流的范围:
•        0:关闭 AQ。
•        1:在整个视频范围和帧内部分配。
•        2:根据帧的比重自动分配(实验性质)。
参照: --aq-strength

aq-strength
自适应量化比重
默认值: 1.0
让 AQ 向低细节(平坦、单调)宏区块倾斜。不容许负值。
参照: --aq-mode

pass
默认值: 未设置
这是两边编码的重要选项。控制 x264 如何处理 stats 文件。有三种设置:
•        1:生成新 stats 文件。在第一遍编码时使用。
•        2:读 stats 文件。在最终编码时使用。
•        3:读 stats 文件,并更新文件。
stats 文件包含每一个帧的信息,x264 用于提升输出质量。第一遍编码时生成 stats 文件,第二遍编码时利用它来优化视频。最佳用途是码率控制。
参照: --stats, --bitrate, --slow-firstpass X264_statsfile

stats
默认值: 'x264_2pass.log' 
设置存放 stats 文件的位置及文件名。
参照: --pass

no-mbtree
默认值: 未设置
禁用宏区块树(mb-tree)码率控制。使用宏区块树跟踪宏区块在帧中的使用状况和权重能够提升压缩率。须要生成一个很大的状态文件来保存数据。
推荐: Default
参照: --rc-lookahead

qcomp
默认值: 0.60
量化值曲线因子。0.0 趋向于 恒定比特率,1.0 趋向于 恒定量化值。
当和 mb-tree 连用时,影响 mb-tree 权重。(高 qcomp 等价于减弱 mb-tree)
推荐: Default
参照: --cplxblur, --qblur

cplxblur
默认值: 20
以指定的半径对量化值曲线应用高斯模糊滤镜。就是经过模糊相邻帧的量化值来达到限制量化值波动的目的。
参照: --qcomp, --qblur

qblur
默认值: 0.5 
在量化值曲线压缩后,以指定的半径对量化值曲线应用高斯模糊滤镜。这个设置不重要。
参照: --qcomp, --cplxblur

zones
默认值: 未设置
能够把视频分段(zone),对每段分别设置压缩选项。你能够修改 zone 中的大部分 x264 选项。
•        单个 zone 格式为 <start frame>,<end frame>,<options>
•        多个 zone 之间用 '/' 分隔。

zone 选项: 
有两个选项比较特殊。能够仅设置一个,假如你设置一个的话,它必须是这个 zone 中的第一个选项。
•        b=<float> 乘以原有 bitrate 是 zone 的 bitrate。有益于高速和低速场景优化。
•        q=<int> 为 zone 提供一个恒定量化值。能够对一部分帧单独优化。
其它可用选项以下:
•        ref=<integer> 
•        b-bias=<integer> 
•        scenecut=<integer> 
•        no-deblock 
•        deblock=<integer>:<integer> 
•        deadzone-intra=<integer> 
•        deadzone-inter=<integer> 
•        direct=<string> 
•        merange=<integer> 
•        nr=<integer> 
•        subme=<integer> 
•        trellis=<integer> 
•        (no-)chroma-me 
•        (no-)dct-decimate 
•        (no-)fast-pskip 
•        (no-)mixed-refs 
•        psy-rd=<float>:<float> 
•        me=<string> 
•        no-8x8dct 
•        b-pyramid=<string> 
限制: 
•        zone 的参考帧数不能超过原有 --ref 定义值。
•        不能在 zone 中 关闭 或 开启 scenecut;若是已经开启,仅能够修改。
•        若是 subme 原有值为 0,则不能修改。
•        若是 --me 原有值为 dia, hex 或 umh,则不能设置为 esa 或 tesa。
•        若是 --me 原有值为 esa 或 tesa ,则不能超越。
例子: 0,1000,b=2/1001,2000,q=20,me=3,b-bias=-1000
建议: Default

qpfile
人为改变标准码率控制。提供一个文件用于指定特定帧的 量化值 和 帧类型。格式为‘帧序号 帧类型 量化值’。例如:
0 I 18 < IDR (key) I-frame
1 P 18 < P-frame
2 B 18 < Referenced B-frame
3 i 18 < Non-IDR (non-key) I-frame
4 b 18 < Non-referenced B-frame
5 K 18 < Keyframe*
•        不须要指定每一帧。
•        把量化值设为 -1等于让 x264 自动判断最佳量化值,当仅须要指定帧率时有用。
•        若是大量指定帧类型和量化值而且还让 x264 自行优化的话,会下降 x264 执行效率。
•        假如设置 --open-gop none,则 'Keyframe' 等价因而一个 IDR I帧的普通关键帧,反之,等价因而一个带恢复点标志 SEI的非 IDR I帧。


分析 选项
partitions
默认: 'p8x8,b8x8,i8x8,i4x4' 
压缩过程当中视频被分割成16x16 的宏区块。这些块能被进一步分割的更小,这些就由本选项控制。
使用本选项,你能够单独定义分割类型。分割类型按帧类型(如:I, P, B)分类。可用的分割类型为 p8x8, p4x4, b8x8, i8x8, 和 i4x4。
•        I: i8x8, i4x4
•        P: p8x8 (亦包含 p16x8/p8x16), p4x4 (亦包含 p8x4/p4x8)
•        B: b8x8 (亦包含 b16x8/b8x16)
你也能够设置为'none' 或 'all'
p4x4 一般不太有用,经过使用它来增长图像质量将极大的下降压缩速度。
参照: --no-8x8dct

direct
默认: 'spatial'
设置直接运动矢量的预测模式。有两种模式:空域和时域(spatial, temporal)。你也能够选择 none 禁用直接运动矢量,或选择 auto 让 x264 根据状况在两种模式之间切换。若是设为 auto,x264 会在编码结束后输出相关信息。auto 在两遍编码方式下工做的很好,并且在单遍编码下也能够工做。在第一遍编码为 auto 时,x264 保存每种方法的平均执行状况,并从中选出下一种预测模式。注意:若是第一遍编码时用的 auto,第二遍编码时就只能用 auto;不然,第二遍编码将默认为 temporal。使用 none 浪费码流,严重不建议。
建议: 'auto' 

no-weightb
默认: 未设置
H.264 容许设置 B 帧参考帧的权重,权重可让你改变各参考帧对预测画面的影响程度。本选项关闭此特性。
建议: Default

weightp
默认: 2
在 P 帧中开启加权预测用于提升压缩率。同时提升淡入淡出场景质量。值越大越慢。
模式: 
•        0. 关闭
•        1. 简单: 淡入淡出分析,可是不重复引用。
•        2. 智能: 淡入淡出分析,重复引用。

me
默认: 'hex'
设置全像素运动预测方式。有5种选择:
•        dia (diamond。菱形)  最简单的搜索方式,从最佳预测点开始,在1个点的上、下、左、右四个方向判断此点的运动轨迹,选择最佳值,重复此过程直至找不到较好的轨迹。
•        hex (hexagon。六角形) 秉承简单策略,除了它是在两行共搜索6个方向,这也是它名称的由来。比 dia 有效且速度基本至关,所以是用于普通编码的好选择。
•        umh (uneven multi-hex。非偶多六角形) 比 hex 慢,可是经过搜索复杂的多六角形区域从而避免错过难以找到的运动轨迹。不像 hex 和 dia,参数 merange 直接控制 umh 的搜索半径,容许你增长或减少搜索范围。
•        esa (exhaustive。穷举) 在最佳预测点 merange 范围内的整个运动空间进行高度优化的智能搜索。它在数学上至关于在区域内搜索每一个运动向量的穷举法。尽管比较快,仍是比 umh 慢,没有太多好处,不适用于每天编码。
•        tesa (transformed exhaustive。改进的穷举) 这种算法试图粗略估计对每一个运动向量进行 Hadamard 变换的效果;像 esa,更好一点也更慢一点。
参照: --merange

merange
默认: 16 
merange以像素为单位控制最大运动搜索范围。对于 hex 和 dia,在默认16下,它的范围强制在 4-16。对于 umh 和 esa,能在16在的基础上增长从而搜索更大的范围,对于高清和高速影片颇有用。注意:对于 umh, esa 和 tesa,增长 merange 将明显下降编码速度。
参照: --me

mvrange
默认: -1 (auto) 
以像素为单位设置全部运动向量最大(垂直)范围。默认值依赖于 level 等级:
•        Level 1/1b: 64 
•        Level 1.1-2.0: 128 
•        Level 2.1-3.0: 256 
•        Level 3.1+: 512 
注意:若是想手工设置 mvrange,当设置时从上面的值中减 0.25(如: --mvrange 127.75)。
建议: Default

mvrange-thread
默认: -1 (auto) 
设置流(threads)之间的最小运动向量缓冲。不要动它。
建议: Default

subme
默认: 7 
设置亚像素估计复杂度。值越大越好。1-5仅仅控制亚像素精细程度。6开启 RDO 用于模式决策,8开启 RDO 用于运动向量和内部预测模式。开启 RDO 的明显慢于未开启的。
使用小于2的值能够更快,且更低质量的向前预测模式,这就至关于形成下降场景切换阀值,所以不推荐这样作。
可选参数: 
0. fullpel only
1. QPel SAD 1 iteration
2. QPel SATD 2 iterations
3. HPel on MB then QPel
4. Always QPel
5. Multi QPel + bi-directional motion estimation
6. RD on I/P frames
7. RD on all frames
8. RD refinement on I/P frames
9. RD refinement on all frames
10. QP-RD (须要 --trellis=2, --aq-mode > 0)
建议: Default, 或更高,除非编码速度很重要。

subq
--subme 的别名。

psy-rd
默认: 1.0:0.0 
参数中第一个数字是 Psy-RDO 的强度(当 subme>=6 时有效)。第二个数字是Psy-Trellis 的强度(当 trellis>=1 时有效)。注意:Trellis 仍处于实验阶段,至少对卡通片来讲是坏事情。
psy-rd 的解释: http://forum.doom9.org/showthread.php?t=138293

no-psy
默认: 未设置
关闭全部用于下降 PSNR 或 SSIM的视觉效果优化功能。同时还关闭一些没法经过 x264 命令行设置的内部 psy 优化功能。
建议: Default

no-mixed-refs
默认: 未设置
混合参考将以 8x8区块选择参考对象,优于按宏区块大小选择参考对象。当使用多个参考帧时能够提升图像质量,会下降编码速度。设置这个选项将关闭它。
建议: Default
参照: --ref

no-chroma-me
默认: 未设置
一般,在亮度和色度两个位面进行运动预测。本选项关闭色度运动预测并能略微提升编码速度。
建议: Default

no-8x8dct
默认: 未设置
8x8 DCT 开启智能的自适应的在 I 帧中使用 8x8 离散余弦变换。本选项关闭此特性。
建议: Default

trellis
默认: 1
经过分格量化(Trellis quantization)来提升效能。
0. 关闭
1. 开启。仅用于最终宏区块编码,速度和效能的良好平衡。
2. 开启。用于全部决策,下降编码速度。
分格量化: http://en.wikipedia.org/wiki/Trellis_quantization
建议: Default
注意: 须要 --cabac

no-fast-pskip
默认: 未设置
关闭P 帧提早跳过检测。以很大的速度损耗为代价换来很是微弱的质量提升。
建议: Default

no-dct-decimate
默认: 未设置
DCT Decimation 将去除中被认为不重要的 DCT 块。这样作能够提升编码效率, 并有些微的质量损失。设置本选项将关闭此功能。
建议: Default

nr
默认: 未设置
执行快速降噪。在量化前,基于此值评估影片噪点,并试图经过去除微小细节的方法清除噪点。效果不如良好的外部降噪滤镜,可是速度很是快。
建议: Default 或 (100 to 1000)

deadzone-inter/intra
默认: 未设置
设置inter/intra 模式下亮度量化死区值。取值应在 0 - 32 之间。死区值定义了细节精细程度等级。很是精细的细节解码和编码都很困难,去除这些细节再也不保存它们有助于节省码流。Deadzone 与 Trellis 不兼容。
建议: Default 

cqm
默认: Flat
把所有自定义量化矩阵设为内建预置。内建预置量化矩阵为 flat 或 JVT。
建议: Default
参照: --cqmfile

cqmfile
默认: 未设置
从 JM 兼容文件读取自定义量化矩阵。覆盖任何其它--cqm* 选项。
建议: Default
参照: --cqm

cqm4* / cqm8*
默认: 未设置
•        --cqm4: 设置全部4x4量化矩阵。用逗号分隔的16个整数。
•        --cqm8: 设置全部8x8量化矩阵。用逗号分隔的64个整数。
•        --cqm4i, --cqm4p, --cqm8i, --cqm8p: 设置亮度和色度量化矩阵
•        --cqm4iy, --cqm4ic, --cqm4py, --cqm4pc: 设置单独的量化矩阵
建议: Default


Video Usability Info
这些选项在输出流中设置标志位,标志能被解码器读出且可能起做用。值得注意的是这些选项大多数状况下是无心义的,并且一般会被软解码器忽略。

overscan
默认: undef 
如何处理过扫描。过扫描在这里的意思就是播放设备仅能显示整幅图像的部分。
可选参数:
•        undef - 未定义
•        show - 显示所有。理论上讲若是设置了就应该被遵照。 
•        crop - 在支持过扫描的设备上让图像适应播放器。不必定遵照。 
建议: 在编码前裁剪,若是设备支持的话,设置 show,其它状况下忽略它。

videoformat
默认: undef 
代表视频在编码/数字化前是什么制式。
可选参数:
•        component 
•        pal 
•        ntsc 
•        secam 
•        mac 
•        undef 
建议: 随便, 或不定义

fullrange
默认: off 
代表亮度和色度是否使用全范围。若是设为 off,则使用有限范围。
参考: http://en.wikipedia.org/wiki/YCbCr
建议: 若是你的源是从模拟信号数值化来的,设为 off。其它,设为 on。
背景:
BluRay/DVD/DV 等使用 MPEG 压缩,记录格式为 YCbCr,遵循 ITU-R BT.601 规范,其数据范围(动态范围)为 Y(亮度)16~235,C(色度)以 128 为中心表明无色,范围 16~240。
作处理和显示的时候,YCbCr 要转为 RGB,其范围为 16~235。
可是计算机屏幕上,纯白的点,其 RGB 值为 (255,255,255),纯黑的点,其 RGB 为 (0,0,0)。因此 MPEG 所记录的纯白 (235,235,235) 在计算机屏幕上看起来就不是纯白,纯黑 (16,16,16) 在计算机屏幕上看起来也不会是纯黑。
所以 DV 录下来的东西,拿到计算机上看,会以为颜色变淡,好像照上了一层白纱。同时由于数据范围(动态范围)缩小为 16~235,而不是全范围(Full Scale)0~255,因此会以为对比不足(最亮和最暗的差距缩小),不如在电视上看漂亮。

colorprim
默认: undef 
设置把什么源色彩色系转换为 RGB 色系。
可选参数: 
•        undef 
•        bt709 
•        bt470m 
•        bt470bg 
•        smpte170m 
•        smpte240m 
•        film 
参考:
http://en.wikipedia.org/wiki/RGB_color_spaces
http://en.wikipedia.org/wiki/YCrCb
建议: 默认, 除非知道源使用的是什么。

transfer
默认: undef 
设置光电传输特性。(就是设置伽马曲线用于校订)
可选参数 
•        undef 
•        bt709 
•        bt470m 
•        bt470bg 
•        linear 
•        log100 
•        log316 
•        smpte170m 
•        smpte240m 
伽马校订: http://en.wikipedia.org/wiki/Gamma_correction
建议: 默认, 除非知道源使用的是什么。

colormatrix
默认: undef 
设置从 RGB 转换时亮度和色度的矩阵系数。
可选参数:
•        undef 
•        bt709 
•        fcc 
•        bt470bg 
•        smpte170m 
•        smpte240m 
•        GBR 
•        YCgCo 
参考: http://en.wikipedia.org/wiki/YCbCr
建议: 随便,或 默认。

chromaloc
默认: 0
设置色度取样位置。(在 ITU-T 规范附录 E 中定义。参见 http://www.itu.int/rec/T-REC-H.264/en
值从0到5。
参考: http://git.videolan.org/?p=x264.git;a=blob;f=doc/vui.txt
建议: 
•        若是正确的从 MPEG1(好比 VCD)的 4:2:0 格式二次采样转码,且不作任何色彩空间转换,应该设为1。
•        若是正确的从 MPEG2(好比 DVD)的 4:2:0 格式二次采样转码,且不作任何色彩空间转换,应该设为0。
•        若是正确的从 MPEG4(好比蓝光)的 4:2:0 格式二次采样转码,且不作任何色彩空间转换,应该设为0。
•        其它,默认。

nal-hrd
默认: None 
标记 HRD 信息。用于蓝光、广播电视和一些其它专业领域。参数有:
•        none 没有 HDR 信息。
•        vbr 指定 HRD 信息。
•        cbr 指定 HRD 信息且把视频流按 bitrate 规则封装。要求编码时使用 bitrate 码率控制模式。
建议: none, 除非须要指定此信息
参照: --vbv-bufsize, --vbv-maxrate, --aud

pic-struct
默认: Not Set 
在 Picture Timing SEI 中强制发送pic_struct。
当使用 --pulldown 或 --tff/--bff 时隐含采用此选项。
建议: Default


Input/Output

output
默认: 未设置
指定输出文件名。由指定的文件名后缀决定视频格式。若是后缀不可识别则采用默认的 raw 格式(一般 .264 后缀用这种格式存储)。
特殊的文件名 NUL (Windows)或者 /dev/null (Unix)表示丢弃输出内容。当使用 pass 1 时特别有用,你惟一关心的输出来自 stats。

muxer
默认: auto
指定用什么格式写文件。
可用参数::
•        auto
•        raw
•        mkv
•        flv
•        mp4
‘auto’选项将根据提供的文件名选择封装器。
参照: --output
建议: Default

demuxer
默认: 自动检测
设置 x264 用于分析输入视频的分离器和解码器。
可用参数:
•        auto
•        raw
•        y4m
•        avs
•        lavf
•        ffms
若是输入文件有 raw、y4m 或 avs 后缀,x264 使用相关的分离器读取文件。标准输入使用 raw 分离器。不然,x264 将依次尝试使用 ffms, lavf 来打开文件,直至放弃。
‘lavf’和‘ffms’参数须要用各自的库文件编译 x264。若是使用二者之一,并且输出不是 raw 的话,x264 将暂缓处理输入文件中的时间码。这将有效的使 x264 采用 VFR-aware。其它参数使用 --fps 指定的固定码率或 --tcfile-in 指定的可变码率。
参照: --input, --muxer
建议: Default

input-csp
默认: i420 
告诉 x264 视频源的色彩空间。支持的色彩空间列表见 x264 --fullhelp。
注意:当指定为 RGB 色彩空间时,视频在压缩前会按 bt601 矩阵转换为 YUV。
参照: --input-res, --fps

input-res
指定 raw 格式视频源的分辨率。使用格式:--input-res 720x576
参照: --input-csp, --fps

index
默认: 未设置
一个仅当使用 ffms --demuxer 时起做用的选项。为 ffms 指定一个用于为输入源创建索引数据的文件,之后编码的时候能够省去再次创建索引的时间。一般不须要,由于相对于编码来讲索引很是快。
参照: --demuxer, FFMS2 API 文档: http://ffmpegsource.googlecode.com/svn/trunk/doc/ffms2-api.html
建议: Default, 除非你想节约一分钟的索引时间。

sar
默认: 未设置
以 宽:高 格式指定编码器使用的视频源的采样纵横比(Sample Aspect Ratio (SAR))。综合使用 SAR 和 帧尺寸能够作出依赖显示纵横比(Display Aspect Ratio (DAR))的可变形(anamorphic)输出,公式为:DAR = SAR x width/height
建议:假如使用 resize 滤镜和变形视频源的话,应该指定。
参考: http://en.wikipedia.org/wiki/Asp ... age%29#Distinctions
译者说明:“可变形”是种特殊应用,欲详细了解能够参考“细说DVD的画面比例”这篇文章: http://www.tfcc.cn/dvd/2004-8-25_14-36-56_1259.html

fps
默认: autodetected 
以浮点数(29.970)、有理数(30000/1001)或整数(2997/100)值指定视频的帧率。x264 在有效的视频源头部(y4m,avs,ffms,lavf)检测帧率并采用,不然使用25。本选项隐含使用 force-cfr。
若是正在使用 raw YUV 视频源而且基于 --bitrate 码率控制,须要使用此选项或 --tcfile-in 指定正确的帧率。不然,x264 没法达到设定的码率目标。

seek
默认: 未设置
设定编码的起始帧,容许从视频源的任意位置开始编码。
建议: Default

frames
默认: 未设置
设定编码的最大帧数,容许在视频源结束前的任意位置终止编码。
建议: Default

level
默认: -1 (自动)
在输出流中设定等级标志(H.264 标准附录A。 http://en.wikipedia.org/wiki/H.264#Levels)。容许的等级有:
1 1.1 1.2 1.3 2 2.1 2.2 3 3.1 3.2 4 4.1 4.2 5 5.1 (等级 1b 不被支持)
若是没有设定等级,x264 将试图自动判断。自动判断并不完美且在不使用 VBV 的状况下可能低估等级。x264 将自动限制 DPB 尺寸(看 --ref)与你设定的等级相匹配(除非你手工指定 --ref)。注意:--vbv_maxrate 或 --vbv_bufsize 不会根据设定的等级自动设置,可是若是它们的参数超越设定的等级会告警。
选择什么等级?
Level 4.1 经常是桌面型硬件能支持的最高等级。蓝光碟仅支持 Level 4.1,许多非手机类设备,像 Xbox 360,指定 Level 4.1 为官方支持的最高等级。手机设备,像 iPhone/Android 则是彻底不一样的处理方式。
详细的等级限制图表,参见: http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels
建议: Default,除非是为一个特定设备编码。

verbose
默认: 未设置
显示每一个已编码帧的统计信息。
建议: Default

no-progress
默认: 未设置 
编码时关闭进度指示器。
建议: Default

quiet
默认: 未设置
开启安静模式,屏蔽 x264 发出的状态信息。
建议: Default

log-level
默认: info
手工设定 x264cli 和 libx264 的日志等级。
可用参数:
•        none
•        error
•        warning
•        info
•        debug
越往下,日志信息越详细。
建议: Default

psnr
默认: 未设置
开启 PSNR 计算,会在编码完成后给出报告,略微下降压缩速度。
建议: Default

ssim
默认: 未设置
开启 SSIM 计算,会在完成后给出报告,略微下降压缩速度。
建议: Default

threads
默认: auto (基于帧的线程数:1.5 x 逻辑处理器数量,向下舍入取整;基于分片的线程数:1 x 逻辑处理器数量)
在多核处理器上经过使用开启多线程并行编码以加快速度。质量损失能够忽略不计,除非使用很是多的线程(超过16个)。速度增加和线程的数量近似于线性,直至在视频垂直方向每40px 多于1个线程为止,超过临界点后再增长线程得到的速度增加将大幅降低。
当前在 x264 内部对线程数量限制为128,实际上你也不会设置这么高。
建议: Default
参照: thread-input, sliced-threads

sliced-threads
默认: off
开启基于分片的线程。比默认方式质量低、效率低,可是没有编码延迟。
基于分片的最大线程数量公式:MIN( (height+15)/16 / 4, 128 ) 
建议: Default (off),除非你正在作实时流排序或者低延迟很是重要。

thread-input
默认: Set if threads > 1
在单独线程中解码输入视频用于编码进程。
建议: Default

sync-lookahead
默认: auto (bframes+1) 
设置用于线程预测的帧缓存大小。最大值是250。在第二遍布更多遍编码或基于分片线程时自动关闭。
设为0将关闭线程预测,将减少延迟,可是以下降性能为代价。
建议: Default

non-deterministic
默认: 未设置 
在 --threads>1 时能够稍微提升编码质量,以非肯定性输出编码为代价。开启多线程 mv 和 在分片类型决策时使用所有的向前预测缓存。
通常不用。
建议: Default 
参照: threads

asm
默认: auto 
不理会自动 CPU 检测。用于调试或排除故障。
建议: Default

no-asm
默认: 未设置 
关闭全部 CPU 优化。用于调试或排除故障。
建议: Default

visualize
默认: 未设置 
开启已编码视频宏区块可视化。用于逐帧调试或分析。
须要编译支持和 X11 窗口系统。
建议: Default

dump-yuv
默认: 未设置 
把重建的 YUV 帧转储到指定文件。一般用于调试。通常不用。
建议: Default

sps-id
默认: 未设置 
设置 SPS(sequence parameter set)和 PPS(picture parameter set) id。
通常不用。
建议: Default

aud
默认: 未设置 
设置访问单元分隔符。
建议: Default,仅用于蓝光碟。

force-cfr
默认: 未设置 
若是使用 ffms2 或 lavf 分离器,且输出文件不是 raw 格式,则从输入文件复制时间码。此选项关闭这个功能,并强制 x264 本身产生。当使用此选项时估计你也会设置 --fps。
建议: Default 

tcfile-in
指定一个说明视频源帧率的时间码文件。能够是 v1 或 v2 格式。
mkvmerge 文档中的解释: http://www.bunkus.org/videotools ... rnal_timecode_files
参照: tcfile-out, force-cfr, fps

tcfile-out
输出一个基于输入时间戳的时间码文件(v2 格式)。用于当你正在编码一个 VFR 视频源且想转储时间码的时候。关于文件格式,参见 tcfile-in。

timebase
默认: 未设置
容许自定义时间基准。
分子是‘秒’,分母是‘ticks’。意思是1个 tick 多少秒。
•        若是得数为有理数,将相应的设置分子和分母。
•        若是得数为整数,而且经过 tcfile-in 设置了时间码文件,将使用得数作分子,并相应的生成分母。
•        若是得数为整数,而且没有设置时间码文件,将得数做为分母并从视频源生成每帧‘ticks’数。
与 --force-cfr 不兼容。
建议: Default

dts-compress
默认: 未设置 
一个小把戏,仅适用于FLV和MP4容器,能够在有缺陷的解码器下工做,这些解码器认为全部的 DTS 都是正确的。使用此选项风险自担,请看说明: http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=80d0bd4b57163389289714e681bdc53ceaaf0f7a
注:DTS 指的是解码时间戳(Decode TimeStamp)。每一帧都分配一个 DTS,对应其在流媒体‘编码顺序’中的位置,不一样于由显示时间戳(Presentation TimeStamp)指定的‘显示顺序’。因为使用 B 帧等压缩技术的缘由,各帧在视频流中的保存顺序与其显示顺序是不一样的,这就形成某些帧须要后续帧的数据。


Filtering
video-filter
x264 过滤系统会在视频源被压缩前处理它们。能够顺序使用多个过滤器。
过滤器的基本语法:
--video-filter <filter>
连续使用多个过滤器时用 / 分隔:
--video-filter <filter1>/<filter2>
你能够按本身喜欢的方式链式使用多个过滤器。
可用的过滤器有:

crop
语法: crop:left,top,right,bottom 
从帧的边缘移去像素。就是常说的剪裁喽。
•        当视频源是yv十二、i420、或 nv12 格式时,剪裁的像素必须是2的倍数。
•        当视频源是 i422 格式时,在宽度方向剪裁的像素必须是2的倍数。

resize
语法: resize:[width,height][,sar][,fittobox][,csp][,method] 
调整帧尺寸 和/或 转换帧的色彩空间。须要 x264 编译时带上 libswscale 库。
如何调整帧尺寸有几种可能的方式:
•        仅 分辨率:按照指定的分辨率调整帧尺寸,同时调整 SAR 从而避免图像拉伸变形。
•        仅 SAR:设定 SAR,同时调整帧尺寸从而避免图像拉伸变形。
•        分辨率 + SAR:按照指定的分辨率调整帧尺寸而且按指定值设定 SAR,可能产生拉伸变形。
•        Fittobox:基于指定约束模式调整帧尺寸,分辨率按1:1的 SAR 自适应。
•        width:调整帧尺寸来符合指定宽度约束。
•        height:调整帧尺寸来符合指定高度约束。
•        both:调整帧尺寸来符合指定矩形约束。
•        Fittobox + SAR:除额外指定 SAR 外与 Fittobox 相似,收缩视频使可变形视频符合指定的约束。
与调整尺寸无关的参数:
•        csp:同时将帧转换为指定的色彩空间。可用的色彩空间列表见 x264 --fullhelp
•        method (默认 bicubic):当调整帧尺寸时,使用指定的调整方法
fastbilinear, bilinear, bicubic, experimental, point, area, bicublin, gauss, sinc, lanczos, spline 
范例: 
resize:width=1280,height=720,method=spline

select_every
语法: select_every:step,offset1[,offset2,...] 
仅选择部分输入帧进行编码,丢弃其它。每隔 step 帧,仅使用 offset 指定的帧。例如:
每2帧,丢弃第1帧,采用第2帧:
select_every:2,1
每3帧,采用第0,1帧,丢弃第2帧:
select_every:3,0,1

更多例子:http://avisynth.org/mediawiki/Select#SelectEveryhtml

=======================================以上内容为转载=================================git

原文地址:http://www.g0759.com/html/JingPinZhiZuo/92.htmlweb

 

注:若是是ffmpeg中使用libx264能够直接使用的参数较少,只有如下内容算法

libx264 AVOptions:
-preset            <string> E.V.. Set the encoding preset (cf. x264 --fullhelp)
-tune              <string> E.V.. Tune the encoding params (cf. x264 --fullhelp)
-profile           <string> E.V.. Set profile restrictions (cf. x264 --fullhelp) 
-fastfirstpass     <int>   E.V.. Use fast settings when encoding first pass
-level             <string> E.V.. Specify level (as defined by Annex A)
-passlogfile       <string> E.V.. Filename for 2 pass stats
-wpredp            <string> E.V.. Weighted prediction for P-frames
-x264opts          <string> E.V.. x264 options
-crf               <float> E.V.. Select the quality for constant quality mode
-crf_max           <float> E.V.. In CRF mode, prevents VBV from lowering quality beyond this point.
-qp                <int>   E.V.. Constant quantization parameter rate control method
-aq-mode           <int>   E.V.. AQ method
   none                    E.V..
   variance                E.V.. Variance AQ (complexity mask)
   autovariance            E.V.. Auto-variance AQ (experimental)
-aq-strength       <float> E.V.. AQ strength. Reduces blocking and blurring in flat and textured areas.
-psy               <int>   E.V.. Use psychovisual optimizations.
-psy-rd            <string> E.V.. Strength of psychovisual optimization, in <psy-rd>:<psy-trellis> format.
-rc-lookahead      <int>   E.V.. Number of frames to look ahead for frametype and ratecontrol
-weightb           <int>   E.V.. Weighted prediction for B-frames.
-weightp           <int>   E.V.. Weighted prediction analysis method.
   none                    E.V..
   simple                  E.V..
   smart                   E.V..
-ssim              <int>   E.V.. Calculate and print SSIM stats.
-intra-refresh     <int>   E.V.. Use Periodic Intra Refresh instead of IDR frames.
-b-bias            <int>   E.V.. Influences how often B-frames are used
-b-pyramid         <int>   E.V.. Keep some B-frames as references.
   none                    E.V..
   strict                  E.V.. Strictly hierarchical pyramid
   normal                  E.V.. Non-strict (not Blu-ray compatible)
-mixed-refs        <int>   E.V.. One reference per partition, as opposed to one reference per macroblock
-8x8dct            <int>   E.V.. High profile 8x8 transform.
-fast-pskip        <int>   E.V..
-aud               <int>   E.V.. Use access unit delimiters.
-mbtree            <int>   E.V.. Use macroblock tree ratecontrol.
-deblock           <string> E.V.. Loop filter parameters, in <alpha:beta> form.
-cplxblur          <float> E.V.. Reduce fluctuations in QP (before curve compression)
-partitions        <string> E.V.. A comma-separated list of partitions to consider. Possible values: p8x8, p4x4, b8x8, i8x8, i4x4, none, all
-direct-pred       <int>   E.V.. Direct MV prediction mode
   none                    E.V..
   spatial                 E.V..
   temporal                E.V..
   auto                    E.V..
-slice-max-size    <int>   E.V.. Limit the size of each slice in bytes
-stats             <string> E.V.. Filename for 2 pass statsapi

 

可是可使用其中的-x264opts参数指定原有x264参数,格式如:-x264opts ref=2:subme=6:trellis=0:8x8dct=0(参数+等号+参数值,多个用冒号分隔)。缓存

 

 

转自:http://www.front2end.cn/blog/Chinese-explanation-of-x264-parameters-%28X264-Settings%29.html服务器

原英文地址:http://mewiki.project357.com/wiki/X264_Settings网络