-preset 取值范围10个等级,默认medium 选择越快,质量越差,文件越小,速度越快
-crf 取值范围18~28 值越大,质量越差,文件越小,速度不影响
-b:v 取值一般在5M~20M 值越小,质量越差,文件越小,速度不影响
-qp 取值0表示无损压缩
-preset目前所有的预设按照编码速度降序排列为(10个等级):
ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo
x264编码指南——码率控制
对于普通用户通常有两种码率控制模式:crf(Constant Rate Factor)和Two pass ABR。 ABR(Average Bit Rate)
crf(Constant Rate Factor):
1 选择一个CRF值
量化比例的范围为0~51,其中0为无损模式,23为缺省值,51可能是最差的。该数字越小,图像质量越好。从主观上讲,18~28是一个合理的范围。18往往被认为从视觉上看是无损的,它的输出视频质量和输入视频一模一样或者说相差无几。
2 选择一个预设 preset
如果你很有耐心,通常的建议是使用最慢的预设。
目前所有的预设按照编码速度降序排列为(10个等级):
ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo
缺省预设为medium,请忽略 placebo因为它是毫无用处的
CRF例子:
接下来将使用x264编码一个视频,使用一个比普通预设稍慢的预设,这样可以得到比默认设置稍好一点的视频质量。
ffmpeg -i input -c:v libx264 -preset slow -crf 22 -c:a copy output.mkv
注意在这个例子中,输入文件的音频流被简单地拷贝到输出,并没有重编码。
两遍模式:
如果你的目标是一个确定大小的文件而且帧与帧之间的视频质量并不重要,这个方法很适用。这通过一个例子可以得到很好地解释。你的视频有10分钟(600秒)的时长同时要求输出为50MB,因为比特率=文件大小/时长
两遍编码的例子:
ffmpeg -y -i input -c:v libx264 -preset medium -b:v 555k -pass 1 -an -f mp4 /dev/null &&
ffmpeg -i input -c:v libx264 -preset medium -b:v 555k -pass 2 -c:a libfdkaac -b:a 128k mp4 output.mp4
无损H.264
你可以使用-qp 0或者-crf 0 来编码一个无损输出,对于无损压缩我们提倡使用-qp 胜过-crf。因为8 bitx264和10 bitx264中的 crf 针对无损模式使用了不同的值。
无损压缩的例子(快速编码)
ffmpeg -i input -c:v libx264 -preset ultrafast -qp 0 output.mkv
无损压缩的例子(高压缩比)高码率???
ffmpeg -i input -c:v libx264 -preset veryslow -qp 0 output.mkv
两遍编码模式能够比CRF模式提供更好的质量吗?
不能,但它可以更加精确地控制目标文件大小。
为什么 placebo 是一个浪费时间的玩意儿?
与 veryslow相比,它以极高的编码时间为代价换取了大概1%的视频质量提升,这是一种收益递减准则
ffmpeg到目前为止还不支持GPU。
https://blog.youkuaiyun.com/mabeijianxi/article/details/72910983