FFmpeg Batch 同时遍历两个不同文件夹中的文件

Posted

技术标签:

【中文标题】FFmpeg Batch 同时遍历两个不同文件夹中的文件【英文标题】:FFmpeg Batch loop through files in two different folders at the same time 【发布时间】:2020-11-20 02:54:49 【问题描述】:

我在这样的两个文件夹中有文件

Video
 record01.mkv
 record02.mkv
Audio
 audio1.avi
 audio2.avi
Merged

我想运行一个循环以根据字母顺序将文件夹中的文件与一对一对应的文件组合起来(例如,“视频”文件夹中的第一个文件与“音频”文件夹中的第一个文件相结合,依此类推)

我需要使用的命令很简单:

ffmpeg -i "record01.mkv" -i "audio1.avi" -map 0 -map 1 -map -1:v -c copy ".\Merged\record01.mkv"

我尝试使用以下命令,但它不起作用(正如我所料,因为两个不同文件夹中的文件具有不同的名称)

FOR /R %%i IN (*.mp4) DO ffmpeg -i ".\Video\%%i" -i ".\Audio\%%i" -map 0 -map 1 -map -1:v -c copy ".\Merged\%%~dni.mkv"

谢谢!

【问题讨论】:

在 linux 上很好,我建议管道我不确定 Windows ls Video | ffmpeg -i 【参考方案1】:

有一个技巧可以并行读取两个文件(或一个文件和一个命令输出):一个输入流使用 for 循环,另一个输入流使用重定向加上 set /p(这个必须是文件):

@echo off
setlocal enabledelayedexpansion
   
dir /b /s /on audio\*.avi > audioFiles
< audioFiles (for /f %%a in ('dir /on /b /s video\*.mkv') do (
  set /p "audio="
  echo %%a, !audio!
))

我相信您能够自己实现ffmpeg 命令。

【讨论】:

聪明!谢谢!

以上是关于FFmpeg Batch 同时遍历两个不同文件夹中的文件的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg 命令用于从两个不同的视频和两个不同的音频创建最终视频

Windows下ffmpeg批处理遍历当前文件夹下所有特定格式文件(如MP4等)无损提取视频音频且生成文件存到原视频文件夹下同时跳过已经处理的文件

FFmpeg 从放置在不同文件夹中的图像制作视频

Windows下ffmpeg批处理遍历当前文件夹下所有特定格式文件(如MP4等)无损提取视频音频且生成文件存到原视频文件夹下同时跳过已经处理的文件

Windows下ffmpeg批处理遍历当前文件夹下所有特定格式文件(如MP4等)无损提取视频音频且生成文件存到原视频文件夹下同时跳过已经处理的文件

如何告诉ffmpeg按顺序遍历目录中的所有文件