视频对象对象

视频对象对象

是否可以通过命令行合并两个 (或更多) 视频文件?在 Windows 中,可以这样做:

copy /b VTS_01_1.vob + VTS_01_2.vob + VTS_01_3.vob + VTS_01_4.vob Output.vob

我发现这比使用专用的 GUI 程序更容易、更快捷。Ubuntu 中有类似的程序吗?

答案1

cat VTS_01_*.vob > output.vob

改进版本(这将显示进度条):

cat VTS_O1_*.VOB | pv | dd of=output.vob

与第二个类似:

 pv VTS_01_*.vob > output.vob

哦,您还可以mv将 output.vob 放到.mpegVLC 或其他视频播放器中播放。


使用 ffmpeg:

ffmpeg -i "concat:VTS_01_1.VOB|VTS_01_2.VOB|VTS_01_3.VOB|VTS_01_4.VOB" -f mpeg -c copy output.mpeg

所用方法cat不会解释文件,而只是将它们加在一起。您会注意到的一个典型现象是,当播放器从 1 转到下一个 VOB 时,会出现轻微的卡顿。例如,Avidemux (GUI) 也会对文件进行解复用(这是正确的词吗?),因此体验会更流畅。


如果您收到错误消息

MPEG-1 系统流中的 ac3 未得到广泛支持,请考虑使用 vob 或 dvd 复用器强制使用 MPEG-2 程序流

然后您将需要通过调整上述 ffmpeg 命令来指定 DVD 作为输出格式... -f dvd ...

答案2

如果你有兴趣使用 FFmpeg(它提供了连接的可能性)其他媒体类型比 .vob 更难处理)您可以使用以下内容作为示例:

ffmpeg -i "concat:VTS_01_1.vob|VTS_01_2.vob|VTS_01_3.vob|VTS_01_4.vob" -c copy output.vob

我承认 FFmpeg 是一个“专用”程序,你可能不愿意使用它,但请注意,其他媒体类型可能需要转码在连接之前,在这些情况下将需要 FFmpeg 的服务......

参考:

答案3

视频对象对象

VOB 需要特别小心,因为它们的结构可能很复杂,时间戳也可能不一致,因此盲目地连接它们可能会产生意想不到的结果。您应该使用 DVD 结构感知工具来处理这种格式。

FFmpeg 源代码附带一个工具(tools/dvd2concat),用于lsdvd生成适当的连接脚本:

cd ffmpeg/tools
./dvd2concat path/to/dvd/structure > file.concat
ffmpeg -safe 0 -protocol_whitelist subfile,file,concat -f concat -i file.concat -map 0 -c copy -f dvd output.vob

其他文件类型

ffmpeg有三种连接方法:

  • 连接解复用器- 用于一般连接或无需重新编码即可进行连接。
  • concat 协议- 与使用类似cat。适用于可以简单连接且无问题的格式(MPEG-1、MPEG-2 PS、DV、rawvideo)。
  • 连接过滤器- 如果您正在执行任何过滤(缩放、覆盖等),则很有用。

另请参阅FFmpeg Wiki:连接FFmpeg 常见问题解答:如何连接视频文件?

答案4

您可以使用cat(连接)命令来实现这一点。

就你的情况而言:

cat VTS_01_1.vob VTS_01_2.vob VTS_01_3.vob VTS_01_4.vob > Output.vob

相关内容