在 Windows 上使用 ffmpeg 使用多个文件作为输入

在 Windows 上使用 ffmpeg 使用多个文件作为输入

在 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

  • 你可以用这个轻松解决这个问题回答@Gyan

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

  1. >input.txt使用(命令块)输出创建/覆盖文件

      >input.txt (for %x in (*.VOB)do @echo file '%~x')
    
  2. 列出所有带有名称.扩展名的文件以进行布局输出file '%~x'

      >input.txt (for %x in (*.VOB)do @echo file '%~x')
    
  3. 仅当最后(块命令)执行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

相关内容