2011-07-23 53 views
2

我想腳本命令如何編寫腳本,使輸出用作輸入?

ffmpeg -i concat:file1.mp3\|file2.mp3 -acodec copy output.mp3 

其合併file1.mp3file2.mp3成爲output.mp3

問題是我有很多我想合併的文件。

ffmpeg -i concat:file1.mp3\|file2.mp3 -acodec copy output1.mp3 
ffmpeg -i concat:output1.mp3\|file3.mp3 -acodec copy output2.mp3 
ffmpeg -i concat:output2.mp3\|file4.mp3 -acodec copy output3.mp3 
ffmpeg -i concat:output3.mp3\|file5.mp3 -acodec copy output4.mp3 

output4.mp3是我要尋找的結果。

的文件實際上並沒有很好地稱爲「文件」 ADN然後一個數字,但ls列出它們的順序,他們應該合併。

問題

怎麼可以這樣照本宣科,所以我可以在一個包含偶數或奇數個文件的目錄中執行它?

+1

FFMPEG支持多種輸入文件,沒有按是嗎? – Brad

回答

3

如果ffmpeg支持兩個以上的文件,沒有文件包含|,並且不會有太多,你可以這樣做: ffmpeg -i concat:"$(ls|tr '\n' '|')" -acodec copy out.mp3

如果不是:

for cfile in *.mp3; do 
    ffmpeg -i concat:myout.mp3tmp1\|$cfile -acodec copy myout.mp3tmp2 
    mv myout.mp3tmp2 myout.mp3tmp1 
done 
mv myout.mp3tmp1 <your final file name> 
+0

非常好。第一次工作。一個小錯字。 -acondec應該是-acodec –

1

如果你只能連接所有文件在一次洗,那最好。但是,對於您的問題猛砸一個通用的答案:

ffmpeg -i concat:file1.mp3\|file2.mp3 -acodec copy output1.mp3 

for i in $(seq 1 10); do 
    ffmpeg -i concat:output${i}.mp3\|file$((i + 2)).mp3 -acodec copy output$((i + 1)).mp3 
done 

這裏10比你的輸入文件的總數少了兩個。

相關問題