是否可以通过命令行合并两个 (或更多) 视频文件?在 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 放到.mpeg
VLC 或其他视频播放器中播放。
使用 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
有三种连接方法:
答案4
您可以使用cat
(连接)命令来实现这一点。
就你的情况而言:
cat VTS_01_1.vob VTS_01_2.vob VTS_01_3.vob VTS_01_4.vob > Output.vob