FFMPEG – 批量转换子文件夹

我正在尝试设置一个Windowsbatch file来使用FFMPEG转换一些MP4文件。 在多个子文件夹中有许多文件,因此我需要在每个子文件夹中的每个文件上执行该脚本。

恐怕我没有太多使用batch file的经验,但从我的研究中,我得到了以下命令文本:

FOR %%i in (*.mp4) /R DO (ffmpeg32 -i "%%~ni.mp4" -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 aac -b:a 128k -ac 2 -strict -2 -cutoff 15000 -c:a:1 copy "%~ni&(2).mp4") 

该脚本基本上需要将AACaudiostream添加到现有的MP4文件,因此我需要通过在文件名末尾添加(2)来更改输出名称。

我已经单独testing了ffmpeg命令,所以很高兴,它只是需要得到正确的批处理命令。

提前感谢任何指针!

干杯

Solutions Collecting From Web of "FFMPEG – 批量转换子文件夹"

尝试这个:

 @echo off & setlocal FOR /r %%i in (*.mp4) DO ffmpeg32 -i "%%~fi" -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 aac -b:a 128k -ac 2 -strict -2 -cutoff 15000 -c:a:1 copy "%%~dpni(2)%%~xi" 

这个Windows批处理(.bat)脚本将从子文件夹(或嵌套目录)中的mp4文件中删除音频,然后删除旧文件。 由于SLEEP命令会减慢速度,因为在Windows和Linux中复制文件之前,显然存在删除文件的问题。

 FOR /r %%i in (*.mp4) DO ffmpeg.exe -i "%%~fi" -vcodec copy -an "%%~dpni(2)%%~xi" && sleep 1 && del "%%~fi"