2013-06-23 106 views
2

我需要使用ffmpeg將許多avi文件(超過100個)轉換爲mp4。我做了這樣的批處理文件,它的工作原理。如何使用ffmpeg同時轉換多個文件?

ffmpeg.exe -i "A.avi" -s 320x240 "A.mp4" 
ffmpeg.exe -i "B.avi" -s 320x240 "B.mp4" 
ffmpeg.exe -i "C.avi" -s 320x240 "C.mp4" 
ffmpeg.exe -i "D.avi" -s 320x240 "D.mp4" 
... 

問題是它們是按順序發生的,而不是同時發生,所以需要太多時間。我的CPU是8核心,64位,8G Ram,所以我想最好儘可能地同時做。我該怎麼辦?

+0

確定的ffmpeg是不是已經多線程? – Blender

+0

是的,我確定。控制檯逐行顯示在文件中,每行完成後,它會啓動下一個文件。 – user1610952

+0

這並不意味着它不是多線程的。編碼器可以爲每個文件產生多個工作線程,這會使並行處理毫無意義。 – Blender

回答

2

您可以設置ffmpeg可以與-threads參數一起使用的最大線程數,但這並不能保證它完全使用cpu。

ffmpeg -i ... -threads 8 ... 

如果您wan't從您的批處理腳本並行運行多個轉碼工作,你可以嘗試用start命令將其啓動。 由於您有超過100個作業,因此您可能希望將它們分成更小的批處理腳本,以便可以並行運行。

Start_all.bat:

start batch_1.bat 
start batch_2.bat 

Batch_1.bat

ffmpeg -i ... 
ffmpeg -i ... 
ffmpeg -i ...  

Batch_2.bat

ffmpeg -i ... 
ffmpeg -i ... 
ffmpeg -i ...  
相關問題