Avconv / FFmpeg - VOB 到 mp4

Avconv / FFmpeg - VOB to mp4

我正在使用 avconv/ffmpeg 将从 DVD 复制的 VOB 文件转换为 mp4。我使用的命令是

avconv -i "concat:1.VOB|2.VOB|3.VOB|4.VOB|5.VOB" -c:v libx264 -crf 28 -c:a libvo_aacenc -b:a 128k output.mp4

这是行得通的,但我看到许多不同的命令使用不同类型的参数,我想知道这是否是 "right" 执行此操作的方法,以及是否有人对哪些参数有建议我应该(不)使用以及为什么(不)使用。该文件应与移动设备和智能电视兼容。我还看到 "libmp3lame" 被用作音频编解码器,使用 AAC 还是 MP3 更好?

一段视频的文件大小为 732.6MB 00:58:37,这合理吗? 也许我可以使用一些东西来进一步减小文件大小而不会造成太多质量损失?

我也对 Avconv 和 FFmpeg 之间的区别感到困惑。我认为 FFmpeg 已被弃用并且 Avconv 是 "newer and better",我安装了两个 Linux Mint,当我在 17.1 安装上 运行 "avconv --help" 我看到

avconv version 9.20-6:9.20-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers

当我 运行 在 18.1 安装上使用相同的命令时,我看到

ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers

avconv 是否比 ffmpeg 更新,还是只是同一事物的不同名称?

VOB 文件可能是奇怪的野兽,因此要将 VOB 与 ffmpeg 连接起来,通常建议使用 FFmpeg 源代码中包含的 dvd2concat 工具。但是,它在存储库中不可用,但您可以下载它。此外,2.8 版本分支很旧,所以也升级你的 ffmpeg。方法如下:

sudo apt install lsdvd
mkdir ~/bin
cd ~/bin
wget https://raw.githubusercontent.com/FFmpeg/FFmpeg/master/tools/dvd2concat
chmod +x dvd2concat
wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-64bit-static.tar.xz
tar xvf ffmpeg-git-64bit-static.tar.xz
mv ffmpeg-git*/ff* .
source ~/.profile

如果您想撤消任何操作:

sudo apt remove lsdvd
rm -rf ~/bin/ff*
hash -r

现在运行编码命令:

dvd2concat /path/to/vob/files dvd.concat
ffmpeg -f concat -safe 0 -protocol_whitelist "file,subfile" -i dvd.concat -vf format=yadif,yuv420p -c:v libx264 -crf 28 -c:a aac -b:a 128k -movflags +faststart -metadata title="Movie Title" output.mp4

请注意 dvd2concat/lsdvd 的控制台输出信息不多,因此请检查它是否实际创建了 dvd.concat。这是一个文本文件,ffmpeg 将使用它来引用输入的 VOB 文件。

The file should be compatible with mobile devices and smart TV's.

添加 -profile:v main 输出选项将有助于兼容旧设备。如果您的硬件相当现代,您可以省略 -profile:v 以允许 x264 自动选择配置文件。

有关详细信息,请参阅 FFmpeg Wiki: H.264

I've also seen "libmp3lame" being used as audio codec, is it better to use AAC or MP3?

AAC。我发现一些播放器对某些包含 MP3 音频的 MP4 文件有问题。

有关编码建议,请参阅 FFmpeg Wiki: AAC

The file size is 732.6MB for a video lasting 00:58:37, is this reasonable?

使用 -crf 时无法猜测输出文件的大小。文件大小将取决于输入的编码复杂性、持续时间和使用的编码选项。

Maybe I can use something to reduce the filesize further without too much quality loss?

增加 -crf 值以获得较低的质量,从而减小文件大小。如果您必须针对特定的输出文件大小,请使用两次编码。否则,就像我们 99% 的人通常做的那样,坚持使用 -crf 的单遍。有关详细信息,请参阅 FFmpeg Wiki: H.264

I'm also confused about the difference between Avconv and FFmpeg. I thought that FFmpeg is deprecated and Avconv is "newer and better". Is avconv newer than ffmpeg or is it just a different name for the same thing?

FFmpeg 项目及其 ffmpeg 命令行工具都曾被弃用。该消息来自 Libav 分支,指的是他们自己的短命假“ffmpeg”工具。 Libav 没有区分 FFmpeg/real ffmpeg 和他们的假“ffmpeg”,这对一般用户来说是可以理解的。有关详细信息,请参阅: