Joe*_*itt 9 command-line video
是否可以从命令行合并两个(或更多)视频文件?在 Windows 中,可以这样做:
copy /b VTS_01_1.vob + VTS_01_2.vob + VTS_01_3.vob + VTS_01_4.vob Output.vob
Run Code Online (Sandbox Code Playgroud)
我发现这比使用专用的 GUI 程序更容易和更快。在 Ubuntu 中有等价物吗?
Rin*_*ind 12
cat VTS_01_*.vob > output.vob
Run Code Online (Sandbox Code Playgroud)
改进版本(这将显示一个进度条):
cat VTS_O1_*.VOB | pv | dd of=output.vob
Run Code Online (Sandbox Code Playgroud)
类似于第二个:
pv VTS_01_*.vob > output.vob
Run Code Online (Sandbox Code Playgroud)
哦,你也可以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
Run Code Online (Sandbox Code Playgroud)
使用的方法cat
不解释文件,只是将它们添加在一起。当玩家从 1 转到下一个 VOB 时,您会注意到的一个典型事情是轻微的卡顿。例如,Avidemux (GUI) 也将解复用(这是正确的词吗?)文件,因此它是一个更流畅的体验。
如果您收到错误消息
MPEG-1 系统流中的 ac3 未得到广泛支持,请考虑使用 vob 或 dvd muxer 强制使用 MPEG-2 程序流
那么你需要通过调整上面的 ffmpeg 命令来指定 DVD 作为输出格式... -f dvd ...
。
如果您有兴趣使用 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
Run Code Online (Sandbox Code Playgroud)
我承认 FFmpeg 是一个“专用”程序,您不想使用它,但请注意,其他媒体类型可能需要在连接之前进行转码,在这些情况下,将需要 FFmpeg 的服务...
参考:
由于 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
Run Code Online (Sandbox Code Playgroud)
ffmpeg
有三种连接方法:
cat
. 适用于可以简单连接的格式(MPEG-1、MPEG-2 PS、DV、rawvideo)。另请参阅FFmpeg Wiki:连接和FFmpeg 常见问题解答:如何连接视频文件?