与 FFmpeg 1.0 实际配合使用的备忘单和预设设置?

Bac*_*alo 43 ffmpeg video-encoding

已经尝试了许多其他地方可用的“备忘单”,但它们几乎都过时了,根本无法与最新版本的 FFMpeg 一起使用。

任何人都可以指出我将使用最新的 FFMpeg 的设置吗?

我主要对以下编解码器感兴趣

H.264,低中高品质预设

ProRes,低中高品质预设

slh*_*hck 65

FFmpeg 不再包含用于 libx264 的基于文本文件的预设和配置文件,即您与该-vpre选项一起使用的内容。这些已被弃用并删除赞成访问实际X264预置,型材(和曲调)用的-preset-profile:v-tune选项。旧文本文件仅模拟官方 x264 预设和配置文件,并且由于一些限制无法提供新系统提供的全部功能。它也更容易维护。

此外,许多编码器都有自己单独的选项;也称为“私人期权”。您必须查看FFmpeg 在线文档中常见编解码器的音频视频编码器选项,或查看 的输出以ffmpeg -h full获取支持选项的完整列表。例如,x264libx264 AVOptions在完整的帮助输出中列出了它的选项。

如果您的 ffmpeg 支持,-preset则不应使用任何文本文件预设,并且 FFmpeg 不再附带任何非标准 iPod 预设。一个常见的误解是文本预设可以简单地从任何地方复制并与任何 ffmpeg 一起使用。这是不真实的,会导致破损。


基本上,预设允许您执行以下操作:

控制质量

通过指定-b:v(对于视频)或-b:a(对于音频)的比特率,或者通过指定编解码器可能支持的任何其他编码方法来控制质量。

对于 x264,有多种编码方法,其中最复杂的是恒定速率因子方法。它导致可变比特率,但在一次通过中总体质量良好。CRF 值范围从 0 到 51,但正常值介于 19 和 26 之间,具体取决于您的来源和您想要的质量。23 是默认值,因此您可以选择 18 表示“高质量”,选择 28 表示“低质量”,无论这对您意味着什么。

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

x264也有其他编码方法,但这超出了这里的范围。

约束H.264 配置文件

这些配置文件定义了编码器可以用来匹配特定解码器功能的特征集。在最近的 FFmpeg 中,使用以下语法来指定配置文件,其中配置文件可以是baselinemainhigh

ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline output.mp4

有关更多信息以及何时应该使用哪个配置文件,请参阅:H.264 配置文件之间有什么区别?

选择 x264 编码 preset

这些预设会影响编码速度。使用较慢的预设可为您提供更好的压缩或每个文件大小的质量,而较快的预设可为您提供较差的压缩。一般来说,您应该只使用您可以等待的预设。预设可以是ultrafastsuperfastveryfastfasterfastmedium(默认)slowveryslow。下面是一个例子:

ffmpeg -i input.mp4 -c:v libx264 -preset slow output.mp4

编码无损视频

这可以通过将 CRF 指定为 0 来实现,因此只需使用-crf 0

ffmpeg -i input.mp4 -c:v libx264 -crf 0 output.mp4

最后,让我们快速谈谈 ProRes。ProRes 接受带有 的固定比特率-b:v,或者您可以指定配置文件,该配置文件应该是介于 0 和 3 之间的值,其中比特率是根据配置文件选择的。更高意味着更好:

ffmpeg -i input.mp4 -c:v prores -profile:v 0 output.mov

ffmbc维基表明,型材的名称可以使用-然而,这未能在FFmpeg的1.0。


小智 28

我做了一个测试,我.mp4在一系列 CRF 值(18、21、24和 27 )。我想知道什么能给我最好的编码速度、输出质量和文件大小组合。

对于每个 CRF 值,我给每个转码操作的编码时间打分(例如,对于 CRF = 18,预设值超快 5.7 秒的时间得分为 1.0,非常慢的 162 秒时间得分为 0,所有其他分数介于两者之间)。我类似地计算输出文件大小分数,当然给最小的文件最好的分数。然后我将两个分数相加,作为“组合”速度/大小分数。

对于四个 CRF 值中的每一个,“veryfast”预设都是不折不扣的赢家,接近完美的分数为 1.94(CRF 18 和 21)、1.96(CRF 24)和 1.97(CRF 27)。我觉得很奇怪,“非常快”每次都产生几乎最小的文件大小,只输给“非常慢”,而且从来没有太多。

我注意到各种预设值之间的一个区别是操作系统(Windows 7)会给我不同的缩略图。较快的预设会在视频中显示几秒钟的缩略图,而较慢的预设的缩略图将反映视频的开头帧。这对我来说并不重要;我学到的是“-preset veryfast”似乎是一个简单的选择。

这是我的结果(作为 Excel 电子表格的快照图像):
excel快照

这是作为 csv 文本的 Excel 电子表格:

CRF,Preset,Seconds,score,MB,score,totalscore
18,1_ultrafast,5.7,1.00,59.5,0.09,1.09
18,2_superfast,8.4,0.98,62.3,0.00,0.98
18,3_veryfast,10.8,0.97,30.9,0.98,1.94
18,4_faster,16.0,0.93,33.5,0.89,1.83
18,5_fast,24.0,0.88,36.8,0.79,1.68
18,6_medium,29.1,0.85,34.9,0.85,1.70
18,7_slow,48.1,0.73,33.9,0.88,1.61
18,8_slower,84.9,0.49,33.0,0.91,1.40
18,9_veryslow,162.0,0.00,30.1,1.00,1.00
21,1_ultrafast,5.7,1.00,38.0,0.00,1.00
21,2_superfast,7.9,0.98,35.0,0.15,1.14
21,3_veryfast,10.0,0.97,19.0,0.97,1.94
21,4_faster,14.2,0.94,21.0,0.87,1.80
21,5_fast,19.9,0.89,23.0,0.77,1.66
21,6_medium,24.6,0.86,22.0,0.82,1.67
21,7_slow,43.1,0.72,21.0,0.87,1.58
21,8_slower,69.8,0.51,20.5,0.89,1.41
21,9_veryslow,137.3,0.00,18.4,1.00,1.00
24,1_ultrafast,5.5,1.00,24.9,0.00,1.00
24,2_superfast,7.5,0.98,21.4,0.27,1.25
24,3_veryfast,9.3,0.97,12.0,0.99,1.96
24,4_faster,13.2,0.93,14.0,0.84,1.77
24,5_fast,17.4,0.90,15.0,0.76,1.66
24,6_medium,21.0,0.87,14.4,0.81,1.67
24,7_slow,37.3,0.72,14.0,0.84,1.56
24,8_slower,62.2,0.51,13.0,0.92,1.42
24,9_veryslow,121.1,0.00,11.9,1.00,1.00
27,1_ultrafast,5.5,1.00,16.8,0.00,1.00
27,2_superfast,7.4,0.98,13.6,0.38,1.36
27,3_veryfast,9.0,0.97,8.4,1.00,1.97
27,4_faster,12.6,0.93,10.1,0.80,1.73
27,5_fast,15.8,0.90,10.4,0.76,1.66
27,6_medium,18.8,0.87,10.0,0.81,1.68
27,7_slow,34.1,0.73,9.8,0.83,1.56
27,8_slower,59.6,0.48,9.0,0.93,1.41
27,9_veryslow,109.7,0.00,8.4,1.00,1.00
Run Code Online (Sandbox Code Playgroud)

  • 我知道超级用户的格式选项一般,但如果您将数据作为文本发布可能会有所帮助 - 可能使用代码格式。 (3认同)
  • 这里有一些关于这些主题的很棒的博客文章,对 [x264](https://write.corbpie.com/ffmpeg-preset-comparison-x264-2019-encode-speed-and-file-size/) 和[x265](https://write.corbpie.com/ffmpeg-preset-comparison-x265-2019-encode-speed-and-file-size/)(可以预见,每个结果都非常不同) (2认同)