我是 FFMpeg 的新手,所以这可能是一个愚蠢的问题,但我在文档中看不到答案。
我想从 DVD vob 文件中解码帧。打开组中的第一个 VOB 工作正常,但我如何告诉 ffmpeg 继续到下一个 VOB 并读取 DVD 上的所有 VOB?
我在硬盘上的一个文件夹中有 VOB 文件。
VOB 格式是mpeg的一个子集,因此您应该能够像 mpeg 数据一样组合您想要读取的 VOB:通过将它们连接在一起。
cat first.VOB second.VOB third.VOB | ffmpeg -i - outfile.mp4
提升Matt Gallagher 的评论以增加寿命/知名度:
较新版本的 ffmpeg 支持连接作为输入文件的运算符。所以你可以使用...
ffmpeg -i concat:VTS_01_0.VOB\|VTS_01_1.VOB\|VTS_01_2.VOB outfile.mp4
您实际上可以使用 ffmpegs 内置连接功能,这是我认为您正在寻找的:
ffmpeg -i "concat:$(echo *.VOB|tr \ \|)" -f mpeg -c copy -sn -y combined.mpg
参见: http://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20concatenate%20( join,%20merge)%20media%20files
内置的连接功能似乎是基于 *NIX 的,对我来说在 Windows 上不起作用。在 Windows上, VobMerge似乎可以加入相关的 VOB 文件(对于 DVD 上的主要电影来说,这似乎是从 1GB 大小开始的集合)。
附加物
您还可以直接从命令行加入 Windows 中的VOB 文件:
copy /b "vob1.vob" + "vob2.vob" + "vob3.vob" "voboutput.vob"
如果文件名中没有空格,您可以省略引号,但请务必记住 the/b
和所有+
符号。
在 Windows 中,我更喜欢“重构”连接,也不依赖预定义的文件名:
copy /b e:\VIDEO_TS\vts*.vob temp.vob
ffmpeg -i temp.vob .... newfile.ogg
/b 表示:二进制拷贝;否则换行符等会被区别对待。
注意事项: