在 Linux 上,cat
这是一种合并多个文件并将它们传递给的好方法ffmpeg
,如FFMpeg 打开 DVD VOB 链吗?
:
cat first.VOB second.VOB third.VOB | ffmpeg -i - outfile.mp4
这对于 Windows 似乎不起作用。
问题:在 Windows 中如何使用多个文件作为 ffmpeg 的输入?
这些解决方案似乎不起作用:
ffmpeg -i a.VOB b.VOB c.VOB d.VOB -c:v copy -c:a copy out.avi
ffmpeg -i a.VOB -i b.VOB -i c.VOB -i d.VOB -c:v copy -c:a copy out.avi
答案1
ffmpeg -i "concat:a.VOB|b.VOB|c.VOB|d.VOB|...| nn.VOB" -c:v copy -c:a copy out.avi
与 mp4 中的方法相同,解释这里
>input.txt (for %x in (*.VOB)do @echo file '%~x') && ffmpeg -safe 0 -f concat -i input.txt -c:v copy -c:a copy out.avi
这可以通过一行完成:
>input.txt (for %x in (*.VOB)do @echo file '%~x') && ffmpeg -safe 0 -f concat -i input.txt -c:v copy -c:a copy out.avi
>input.txt
使用(命令块)输出创建/覆盖文件>input.txt (for %x in (*.VOB)do @echo file '%~x')
列出所有带有名称.扩展名的文件以进行布局输出
file '%~x'
>input.txt (for %x in (*.VOB)do @echo file '%~x')
仅当最后(块命令)执行
return 0
(由操作员&&
)时,才运行ffmpeg
命令:... && ffmpeg -safe 0 -f concat -i input.txt -c:v copy -c:a copy out.avi
您还可以使用不同的驱动程序/文件夹:
>"%temp%\input.txt" (for %x in ("d:\movies\last\*.VOB")do @echo file '%~x') && "c:\ffmepg\bin\ffmpeg.exe" -safe 0 -f concat -i "%temp%\input.txt" -c:v copy -c:a copy "d:\movies\last\concat\out.avi"
答案2
在多个 .VOB 输入文件(例如 DVD)的特定情况下,最简单的方法似乎是:
copy /b e:/video_ts/vts_*.vob temp.vob
然后temp.vob
用进行编码ffmpeg
。