FFMPEG - Batch convert subfolders

2020-02-28 18:56发布

问题:

I am trying to set up a Windows batch file to convert a number of MP4 files using FFMPEG. There are a number of files in multiple subfolders, therefore I need the script to execute on each file in each subfolder.

I'm afraid I don't have much experience of using batch files but from my research I've got the following command text:

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")

The script basically needs to add an AAC audio stream to an existing MP4 file, therefore I need to change the output name by adding a (2) at the end of the filename.

I've tested the ffmpeg command separately so happy that it works - I just need to get the correct batch commands.

Thanks in advance for any pointers!

Cheers

回答1:

Try this:

@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"


回答2:

This windows batch (.bat) script will remove audio from mp4 files within subfolders (or nested directories) and then delete the old file. It is slowed by a SLEEP command because there is apparently problems with file deletion before it copies in both windows and linux.

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