2013-04-22 62 views
4

我想設置一個Windows批處理文件來使用FFMPEG轉換一些MP4文件。在多個子文件夾中有許多文件,因此我需要在每個子文件夾中的每個文件上執行該腳本。FFMPEG - 批量轉換子文件夾

我怕我沒有使用批處理文件但是從我的研究,我已經得到了下面的命令文本的很多經驗:

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

腳本基本上需要一個AAC音頻流增加現有的MP4文件,因此我需要通過在文件名末尾添加(2)來更改輸出名稱。

我已經單獨測試了ffmpeg命令,所以很高興它工作 - 我只需要得到正確的批處理命令。

在此先感謝您的指點!

乾杯

回答

5

試試這個:

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

謝謝你,作品一種享受。 爲了我自己的理解,「%%〜fi」和「%%〜dpni」/「%%〜xi」實際上在批處理文件中做了什麼? – user2306403 2013-04-22 08:52:59

+1

'%%〜f' - >全名(驅動器+路徑+文件+擴展名),'〜dpn' - >驅動器+路徑+文件,'〜x' - >擴展名(.MP4)幫助在命令行上查看'help for'。 – Endoro 2013-04-22 10:12:57

+0

乾杯,非常感謝 – user2306403 2013-04-22 14:43:11

0

此窗口批處理(.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"