FFMpeg打开DVD VOB链?
我是FFMpeg新手,所以这可能是一个愚蠢的问题,但我在文档中没有看到答案 我想解码DVD vob文件中的帧。打开组中的第一个VOB效果很好,但是我如何告诉ffmpeg继续下一个VOB并读取DVD上的所有VOB 我将VOB文件保存在硬盘上的文件夹中。VOB格式是的一个子集,因此,您应该能够将要读取的VOB组合在一起,就像将mpeg数据连接在一起一样FFMpeg打开DVD VOB链?,ffmpeg,dvd,vob,Ffmpeg,Dvd,Vob,我是FFMpeg新手,所以这可能是一个愚蠢的问题,但我在文档中没有看到答案 我想解码DVD vob文件中的帧。打开组中的第一个VOB效果很好,但是我如何告诉ffmpeg继续下一个VOB并读取DVD上的所有VOB 我将VOB文件保存在硬盘上的文件夹中。VOB格式是的一个子集,因此,您应该能够将要读取的VOB组合在一起,就像将mpeg数据连接在一起一样 cat first.VOB second.VOB third.VOB | ffmpeg -i - outfile.mp4 提升使用寿命/能见度:
cat first.VOB second.VOB third.VOB | ffmpeg -i - outfile.mp4
提升使用寿命/能见度:
较新版本的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
请参阅:内置的连接功能似乎基于*NIX,在Windows上对我来说不起作用。在Windows上,似乎加入了相关的VOB文件(DVD上的主电影似乎是1GB大小的设置) 附录 您还可以在Windows中加入VOB文件: 如果文件名中没有空格,可以省略引号,但请务必记住
/b
和所有+
符号。在windows中,我更喜欢“重构”串联,也不依赖预定义的文件名:
copy /b e:\VIDEO_TS\vts*.vob temp.vob
ffmpeg -i temp.vob .... newfile.ogg
/b表示:二进制副本;否则,换行符等将被区别对待
注意事项:
- 有时有些VOB文件不是电影的一部分,我找不到一种自动的方法来检测哪个是哪个
- 在速度较慢的I/O系统上,这增加了一个巨大的时间消耗:写入和读取临时文件需要时间
cat
的级联输出通过管道直接传输到从stdin读取的ffmpeg
。这就是-i-
所表示的。在速度上应该没有差别。较新版本的ffmpeg支持将级联作为输入文件上的运算符。所以你可以用。。。ffmpeg-i concat:VTS_01_0.VOB\| VTS_01_1.VOB\| VTS_01_2.VOB outfile.mp4在Windows命令提示符中,还可以使用双引号使管道字符显式。否则,您将得到一个VLC错误。您应该删除-sn
,因为这只会删除您可能不想要的字幕。您还应该能够删除-f mpeg
copy /b e:\VIDEO_TS\vts*.vob temp.vob
ffmpeg -i temp.vob .... newfile.ogg