FFmpeg 中的 VOB 转换质量

FFmpeg 中的 VOB 转换质量

我正在尝试将 VOB 文件转换为 mpeg,如下所示:

./ffmpeg.exe -i VTS_01_2.VOB -r 24  out1.mpeg

但质量很差。

我试过 ./ffmpeg.exe -i VTS_01_2.VOB -vcodec copy out1.mpeg

但是文件大小太大(原始文件的 90% – 4 分钟的视频占用 300 MB),Windows Movie Maker 在尝试导入它时挂起了。

我怎样才能从我的 VOB 中获取质量合适的 MPEG?

答案1

ffmpeg -i input.vob -c:v copy -c:a copy output.mpg  

此命令不会减小大小或改变质量。它只是对 VOB 进行解复用并将其重新打包为 MPEG。您应该会得到完全相同的质量。由于丢失了 VOB 容器的开销,因此大小变化很小。

如果您想要保持质量并减小尺寸,则必须使用其他编码器(如 x264 或 XviD)将其转换为 MKV 或 MP4 容器,例如:

ffmpeg -i input.vob -c:v libx264 -c:a aac -strict experimental output.mp4

这将为您提供 H.264 视频和 AAC 音频。设置-crf 23视频质量,质量越低表示质量越好(合理的值是 18-28)。音频质量可以通过 更改-b:a 192k为固定比特率,或者如果您想使用其他编码器(例如)-c:a libfaac,您可以选择 VBR -q:a 100(100% 默认质量)。

答案2

我最近在翻录了几张不可替代的 DVD 后进行了一些 VOB 编码。ffmpeg version 1.2.4在 OSX 上使用 Homebrew:

ffmpeg -probesize 2G -analyzeduration 2G \
    -i VTS_04.VOB \
    -map 0:0 -map 0:1 -map 0:2 -map 0:9 \
    -metadata:s:a:0 language=eng -metadata:s:a:0 title="English Stereo" \
    -metadata:s:a:1 language=jap -metadata:s:a:1 title="Japanese Stereo" \
    -metadata:s:s:0 language=eng -metadata:s:s:0 title="English"
    -c:v libx264 -filter:v yadif -crf 18 -level 3.1 -tune film \
    -c:a copy \
    -c:s copy \
    OutputMovie.mkv

我必须进行设置-probesize-analyzeduration因为 5.4GB VOB 文件的流在文件较晚的位置开始,如果没有这些选项则无法找到。

接下来,该-map参数允许我选择要传递到输出的流 - 视频流、前两个音频流和第 9 个流(即字幕)。使用ffprobe&-probesize-analyzeduration查看流列表。

-metadata在输出中添加一些音频和字幕流。

-c:v您可以阅读以下视频编码选项别处

最后将音频和字幕流原封不动地复制到输出文件。输出必须MKV按顺序正确嵌入字幕和所有元数据。

在我的 Macbook Air 2011 上,此编码花费了大约 6 个小时,并生成了一个完美的 2.4GB MKV 文件。

答案3

上一个答案中的语法在我的 Mac OS 上不起作用。这个似乎工作正常,但选项略有不同(-sameq匹配输入量化器、-ss开始时间偏移和-t持续时间):

ffmpeg -i VTS_01_1.VOB -sameq -strict experimental -ss 1612 -t 28 test.mpg

相关内容