【问题标题】:FFMpeg open a DVD VOB chain?FFMpeg 开启 DVD VOB 链?
【发布时间】:2012-01-04 17:05:21
【问题描述】:

我是 FFMpeg 的新手,所以这可能是一个愚蠢的问题,但我在文档中看不到答案。

我想从 DVD vob 文件中解码帧。打开组中的第一个 VOB 工作正常,但我如何告诉 ffmpeg 继续到下一个 VOB 并读取 DVD 上的所有 VOB?

我在硬盘上的一个文件夹中保存了 VOB 文件。

【问题讨论】:

    标签: ffmpeg dvd vob


    【解决方案1】:

    VOB 格式是mpeg 的子集,因此您应该能够像将 mpeg 数据一样组合您想要读取的 VOB:通过将它们连接在一起。

    cat first.VOB second.VOB third.VOB | ffmpeg -i - outfile.mp4
    

    提升Matt Gallagher's comment 以增加寿命/知名度:

    较新版本的 ffmpeg 支持连接作为输入文件的运算符。所以你可以使用...ffmpeg -i concat:VTS_01_0.VOB\|VTS_01_1.VOB\|VTS_01_2.VOB outfile.mp4

    【讨论】:

    • 这不是先将 vobs 复制到一个新的组合文件中吗? (DVD 需要几分钟)
    • 没有。来自cat 的串联输出直接通过管道传输到从标准输入读取的ffmpeg。这就是-i - 的含义。速度应该没有差别。
    • 较新版本的 ffmpeg 支持连接作为输入文件的运算符。所以你可以使用... ffmpeg -i concat:VTS_01_0.VOB\|VTS_01_1.VOB\|VTS_01_2.VOB outfile.mp4
    • 在 Windows 命令提示符下,您还可以使用双引号来明确管道字符。否则,您将收到 VLC 错误。
    【解决方案2】:

    您实际上可以使用 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

    【讨论】:

    • 您应该删除-sn,因为这只会删除您可能不想要的字幕。您还应该能够删除-f mpeg
    【解决方案3】:

    内置的连接功能似乎是基于 *NIX 的,对我来说在 Windows 上不起作用。在 Windows 上,VobMerge 似乎可以加入相关的 VOB 文件(DVD 上的主要电影似乎是从 1GB 大小开始的设置)。

    附录

    你也可以在Windowsdirectly from the command line加入VOB文件:

    copy /b "vob1.vob" + "vob2.vob" + "vob3.vob" "voboutput.vob"
    

    如果文件名中没有空格,您可以省略引号,但请务必记住 /b 和所有 + 符号。

    【讨论】:

      【解决方案4】:

      在 Windows 中,我更喜欢“重构”连接,也不依赖预定义的文件名:

      copy /b  e:\VIDEO_TS\vts*.vob  temp.vob
      ffmpeg -i temp.vob .... newfile.ogg
      

      /b 表示:二进制拷贝;否则换行符等会被区别对待。

      注意事项:

      • 有时 VOB 文件不是电影的一部分,我找不到自动检测哪个是哪个的方法
      • 在慢速 I/O 系统上,这会增加大量时间:写入和读取临时文件需要时间。

      【讨论】:

        猜你喜欢
        • 2018-02-02
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 2022-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-21
        相关资源
        最近更新 更多