预设值
preset fast/slow
--preset的参数主要调节编码速度和质量的平衡,有ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo这10个选项,从快到慢
--tune的参数主要配合视频类型和视觉优化的参数,或特别的情况。如果视频的内容符合其中一个可用的调整值又或者有其中需要,则可以使用此选项,否则建议不使用(如tune grain是为高比特率的编码而设计的)。
tune的值有: film: 电影、真人类型;
帧相关参数
keyint gop的大小
min_keyint 场景切换的时候如果发现变化率超过了scenecut设定的值并且超过了min_keyint的值就插入一个I帧
scenecut 场景切换的时候变化多少算切换
bframes 连续B帧的数量 一般不超过3帧
ref 参考帧的数量,解码器中存放的参考帧的数量
no-deblock/block 去块滤镜
no-cabac 是否使用cabac压缩
码流控制
Qp 关注量化器,比crf码流大且与bitrate/crf互斥。一般而言crf都能代替QP模式,不过QP因为完全不需要预测所以它会运行地更快些。
Bitrate 关注码流,无法控制质量
crf 关注质量,默认是23,数值越低越好
量化器的取值
Qmin 10
Qmax51
Qpstep 两帧之间量化器的最大变化,默认为4
编码分析
partitions
默认:’p8x8,b8x8,i8x8,i4x4′
说明:H.264在压缩前会被切分为16×16大小的宏块。这些块可被进一步切分成更小的块,利用此参数,可以控制不同的帧类型(I、P、B)开启更细的帧切分(8×8、4×4),具体参数如下:
I帧:i8x8、i4x4;
P帧:p8x8(会同时开启p16x8和p8x16)、p4x4(会同时开启p8x4和p4x8);
B帧:b8x8(会同时开启b18x8和b8x16);
另外,也可以设置为’none’和’all’。一般而言,开启p4x4不会带来多少的质量提升,而且它极其耗时,是个性价比比较低的选项。
me
默认:’hex’
说明:设置全局的运动预测方法,有以下5种选择:
dia(四边形搜索) —— 最简单的搜索,从最乐观的情况开始预测,在运动矢量的上下左右分别偏移一个像素对比,选择其中最好的,循环直至找不到更匹配的运动矢量。
hex(六边形搜索) —— 和菱形差不多的策略,不同的是,它在6边形的6个顶点上进行rang-2的搜索,它实现了比dia有效率地多的搜索而几乎不会使用更多的耗时,它是普通编码任务一个很好的选择。
umh(不均匀的多六边形搜索) —— 显著地比hex要慢,但它尝试进行复杂多六边形的搜索,以避免错过那些难以找到的运动矢量。与hex和dia不同的是,merange参数直接任意大小控制umh的搜索半径。
esa(全局搜索) —— 高度优化的全局智能搜索,在最佳预测器的merange范围内进行运动搜索。在全局面进行运动向量的算术对比,虽然计算过程并不慢,但好事仍比umh有显著提升,而且并不会带来太多质量方面的提升。所以,对于日常的编码任务来说,它不是特别有用。
tesa(变换全局搜索) —— 使用一种算法,效果近于对全局的每个运动矢量进行Hadamard 变换比对。搜索方式上和esa很像,但是效果比esa好一点点,耗时也多一点点。
输出
SAR
设置输出的宽高比
fps
帧率
leve
设置输出的规格
例子
ffmpeg -vsync 1
-async 1
-i xxx.flv
-b:v 200k
-maxrate 250k
-bufsize 400k
-pix_fmt yuv420p
-vcodec libx264
-coder 1
-refs 3
-bf 5
-flags +loop -deblock -1:1
-partitions i4x4 + i8x8+p8x8+b8x8
-me_method umh
-g 60
-keyint_min 30
-qmin 0 -qmax 69 -qdiff 2
out.mp4
vsync 视频同步
async 音频同步
-b:v 200k 控制视频码流是200k
-maxrate 最大码流
-bufsize 缓冲区大小
-pix_fmt 原始数据的格式
-vcodec 使用的编码库
-coder 1 使用熵编码 cabac
-refs 3 参考帧的数量是3
-bf b帧的最大数量是5
-flags +loop -deblock 使用去块化的滤波器
-partitions 编码前被切分的宏块
-me_method 宏块匹配算法
-g gop的大小
-keyint_min gop的最小值
-qmin 0 -qmax 69 -qdiff 2 qbdiff就是Qpstep
我们可以通过下面两个网址查看更多的参数
http://www.chaneru.com/Roku/HLS/X264_Settings.htm
https://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping