![FFmpeg 中的 VOB 转换质量](https://linux22.com/image/1262149/FFmpeg%20%E4%B8%AD%E7%9A%84%20VOB%20%E8%BD%AC%E6%8D%A2%E8%B4%A8%E9%87%8F.png)
我正在尝试将 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