1、预设值
preset: fast/slow,fast一般用于实时通讯,要求速度;slow一般用于点播,保证质量
tune: 质量相关,比如:用于电影、动画等不同
2、帧相关参数
keyint/min-keyint,keyint 设置gop
scenecut: 用于场景切换
bframes: B帧的数量,一般是3帧
ref:参考帧的数量
no-deblock/deblock(滤波器):去块化,一般指解码后视频看起来还有一些块状模糊,这时我们可以使用deblock进行平滑处理
no-cabac:是否使用cabac熵编码
3、码流相关参数
Qp 关乎量化器,比crf码流大而且与bitrate/crf 互斥
Bitrate,关注码流,无法控制质量
crf,关注质量,默认是23,数越低越好
4、编码分析
Partitions(宏块类型) p8x8,b8x8,i8x8,i4x4...
Me 运动评估算法,钻石、六边形算法...
5、输出
SAR 设置输出的宽高比
fps 帧率
level
举例:输出:
ffmpeg -vsync -async(代表音视频同步) 1 -i xxx.flv
-b:v 200K(码流) -maxrate 250K(最大码流250K) -bufsize 400K
-pix_fmt yuv420p
-vcodec libx264 -coder 1(采用cabac熵编码)
-refs(参考帧数量) 3 -bf(b帧数量) 5
-flags +loop -deblock -1:-1(采用滤波器)
-partitions i4x4+i8x8+p8x8(宏块分析) -me_method umh(运动估计算法)
-g(gop) 60 -keyint_min(最小帧组) 30
-qmin(最小量化值) 0 -qmax (最大量化值)69 -diff(帧与帧的量化差别数) 2
out.mp4
参考资料:
http://www.chaneru.com/Roku/HLS/X264_Settings.html(具体参数的含义)
https://sites.goole.com/site/linuxencoding/x264-ffmpeg-mappng(x264与FFmpeg参数的对照)