【问题标题】:FFMPEG in Windows 7: merge mp4 files from different folders in a batchWindows 7 中的 FFMPEG:批量合并来自不同文件夹的 mp4 文件
【发布时间】:2014-06-05 17:59:41
【问题描述】:

我想在 Windows 7 上使用 FFMPEG 将目录的每个文件夹的 3 个 mp4 视频连接成一个 avi 视频。

我是这样开始的:

ffmpeg -f concat -i mylist.txt -c copy E:\EA2014\EX14R\EX14R.avi

mylist.txt 是:

file 'E:\EA2014\EX14R\DCIM\100GOPRO\GOPR0001.MP4' 
file 'E:\EA2014\EX14R\DCIM\100GOPRO\GP010001.MP4' 
file 'E:\EA2014\EX14R\DCIM\100GOPRO\GP020001.MP4' 

这很好用。现在,我想自动化它,因为我有很多充满视频的文件夹要合并。 我试着从这个开始:

printf "file '$s'\n" .E\EA2014\EX14R\DCIM\100GOPRO\*.MP4 >> mylist.txt

但它告诉我

“printf 不是内部或外部命令、可运行程序或批处理文件”

是因为我在 Windows 中工作吗?任何人都可以帮助我以另一种方式实现它?

不用说我是新手!

谢谢!

【问题讨论】:

  • 可能使用脚本语言,或者,如果您沉迷于批处理文件,stackoverflow.com/questions/138497/… 可能会有所帮助
  • 每个文件夹是否正好包含三个 MP4 文件?目标文件名来自哪里?目标位置是否固定?
  • 每个文件夹包含 3 个 MP4。它们的文件名是从相机设备 (gopro) 自动生成的。每个文件夹的目标位置都会改变(例如 EX14R、EX15R、EX16R 等)

标签: windows batch-file video ffmpeg concatenation


【解决方案1】:

这应该处理E:\EA2014\EX14R 树下的每个文件夹,并在每个单独的文件夹中创建 .avi 文件,称为 myfile.avi

@echo off
for /d /r "E:\EA2014\EX14R" %%a in (*) do (
   if exist "%%a\*.mp4" (
      del mylist.txt 2>nul
      for %%b in ("%%a\*.mp4") do >>mylist.txt echo file '%%b'
      ffmpeg -f concat -i mylist.txt -c copy "%%a\myfile.avi"
      del mylist.txt 2>nul
   )
)

【讨论】:

  • 感谢 foxidrive。我收到此错误:此时 %%a 出乎意料。我该如何解决这个问题?
  • 你把它放在批处理文件里了吗?你有什么改变吗?
  • 我确实把它放在了一个批处理文件中。我只是将第二行更改为: for /d /r "E:\EA2014" %%a in (*) do ( 因为包含 mp4 文件的文件夹都位于 EA2014
  • 可能出现了一些编辑错误——我在这里以基本的方式测试了脚本,它没有产生任何错误。再次尝试复制/粘贴并将echo 放在ffmpeg 之前并按原样运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
  • 1970-01-01
  • 2020-12-06
  • 2021-01-25
  • 2015-12-03
相关资源
最近更新 更多