2011-04-19 87 views
2

我需要通過iPad應用程序中的代碼將不同類型的音頻文件混合到一個輸出文件中。 例如,我需要將.m4a文件與.mp3或.wav或任何其他格式文件合併。 生成的輸出文件應該是.m4a類型。如何使用FFMPEG混合不同格式的聲音文件?

我已經編譯FFMPEG適用於iOS與鏈接:http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-October/076618.html

現在,我無法理解在哪個方向前進?

+0

你可以通過混合來定義你的意思嗎?在FFMPEG中,您可以將單聲軌道合併爲一個立體聲軌道。但我認爲ffmpeg不會讓你在傳統意義上「混合」,它是爲轉換而設計的。 – Twelve47 2011-04-19 10:09:37

+1

通過混合我的意思是:假設我有一個帶有鼓節奏的文件,另一個帶有吉他聲音。混合時,輸出文件應該像一個完整的樂器一樣同時播放這兩個音樂。 – iPhoneDev 2011-04-19 10:18:13

+0

我不認爲ffmpeg會讓你這樣做。 – Twelve47 2011-04-19 10:32:46

回答

0

這不僅僅是一個答案而是一個建議。我沒有任何關於obj-c的經驗,儘管我已經使用過其他語言的音頻格式。除非你找到一些庫來完成這個特定的任務,否則你可能需要解碼這些文件並將它們的數據轉換爲一些常見的數字表示形式。

sample data of a .wav文件存儲爲-32768至32767範圍內的有符號整數,而mp3 sample data存儲爲範圍爲-1至+1的浮點數。任何一種表示都可以通過簡單的計算轉換爲另一種表示。

mp3ToWavSample = mp3Sample * 32767 

一旦數據轉換「合併」變得非常容易。您可以簡單地將樣本值添加到一起。

mergedSample = convertedSample1 + convertedSample2 

您需要將此應用於mp3中的每個示例。根據文件的大小,這可能是一個重要的處理任務。

至於添加混響到你的軌道,我建議你在另一個問題上尋求幫助。