命令/应用程序转换视频文件

命令/应用程序转换视频文件

有人知道如何将多个视频文件批量转换为较小的尺寸吗?

答案1

来源:堆栈交换 Ubuntu 及其捆绑的 FFmpeg

好吧,您遇到了这样的问题:FFmpeg 不再随 Ubuntu 提供,但您尝试通过 apt-get 安装它。

This program is not developed anymore and is only provided for compatibility

这简直就是个谎言。FFmpeg 正在积极开发,但 Ubuntu 软件包已经过时,他们已经切换到 libav。请参阅此处的错误报告,其中讨论了消息的措辞。从源代码安装或使用静态构建

如果您不想自己编译,您可以简单地从 Burek 或 Relaxed 获取静态构建。提取文件夹并使用其中的 ffmpeg 二进制文件。

如果您想要保持最新状态并自行配置该工具,则需要从源代码编译它。查看 Ubuntu 编译指南以获取有关安装的详细方法。按照这些步骤,您将获得最新版本的 FFmpeg(编码工具)和 x264(特定视频编码器)。我需要做什么来减小尺寸?

你问 …

which file formats and compression methods are recommended these days

事实上,只有一种压缩方法(“编解码器”)是每个人都会推荐的。它是 h.264 或 MPEG-4 Part 10/AVC 标准,它指定了一种用于低带宽视频的压缩方法。h.264 对于更高带宽也能取得很好的效果。它的一种非常常见的编码器称为“x264”,即我们上面安装的那个。

它取代了 MPEG-4 Part 2,这是使“DivX”和“XviD”编码器闻名的视频编解码器标准。这些编码器也很好,但它们需要更多带宽才能保持相同的质量。

实际的文件格式并不重要。H.264 视频几乎可以存放在任何容器中,从 AVI 到 MP4、MOV 和 MKV。了解视频编解码器本身与简单封装它的容器之间的区别很重要。更多信息请参见此处:什么是编解码器(例如 DivX?),它与文件格式(例如 MPG)有何不同?我现在会选择 MP4 或 MKV 作为输出容器。AVI 太旧了,不允许您对视频进行太多处理,对于上述容器,有更好的工具可用于重新复用。

当您想要减小尺寸时,您需要降低视频的平均比特率。在最简单的情况下,这意味着强制编码器以恒定比特率(例如 1.5 MBit/s)编码。这种方法有效,但也有一些缺点。不要使用固定比特率进行编码,而是让编码器选择要花费多少比特率。这样可以得到一个适合视频内容的平均比特率。使用“恒定速率因子”选项可以实现此目的。

对于 x264,这意味着为此 CRF 设置一个介于 18 和 26 之间的值。默认值为 23,值越高,质量越差,反之亦然。您不需要确切知道它的作用,但如果您有兴趣,请参阅此 CRF 指南。如何执行转换?

一旦启动并运行 FFmpeg,您就可以简单地将视频转换为 x264 / MP4,并以 192 kBit/s 固定比特率使用 AAC 音频:

ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a libfaac -b:a 192k output.mp4

就是这样。您可以通过调整 CRF 值来改变输出大小和质量。值越低意味着质量越好,尺寸越大。值越高意味着质量越差,尺寸越小。正如我所说,合理的值介于 18 到 26 之间,甚至可能更大。如果您真的想减小输入视频的大小,请选择在减小文件大小的同时仍能提供可接受的视频质量的 CRF 值。

要测试视频的效果,您可以在转换过程中随时按 Q。转换后会留下一个截断的文件,但仍然可以播放。您也可以提供 -t 选项,其中指定要编码的时间长度(例如,仅编码前 30 秒)。批处理

如果您有一批想要转换的 AVI 文件,您可以执行以下操作:

while IFS= read -d '' -r file; do ffmpeg -i "$file" -c:v libx264 -crf 23 -c:a libfaac -b:a 192k ${file%%.avi}-converted.mp4 done < <(find . -iname "*.avi" -print0)

您可以更改此命令中的 .avi 后缀,并让它对其他文件再次运行。

请注意,视频编码是一项耗时的任务,需要一段时间才能找到适合源文件的完美设置。

答案2

相关内容