2010-04-16 81 views
6

我有幾個wav文件,可能還有一個mp3,我想混合到一個wav或mp3文件。我正在使用C/C++/Obj-C(iPhone)。我真的沒有這方面的經驗。如果有人能給我一些指點,我將非常感激。在iPhone上混合聲音文件

基本上我想要做的是類似的事情,例如Audacity可以做的,但以編程方式。是不是有一個聲音庫,您可以輕鬆打開音頻文件並將它們「粘貼」到指定位置的新文件夾中?哪裏混音是你不必擔心的事情?

謝謝。

+0

你能說清楚你是想同時播放文件還是混合文件,然後將結果寫入文件?如果是後者,是否有理由不能預先處理它們以提前創建單個文件?如果是前者,你可能要閱讀Audio Queue Services或OpenAL,這兩者都是非常深刻的主題。 – warrenm 2010-04-16 14:11:14

+0

編輯問題更清楚。是的,聲音可能是同時發生的。 – quano 2010-04-18 14:58:17

+0

@quano hv你找到解決方案? – Aadil 2011-11-15 12:06:57

回答

0

閱讀Multimedia support作爲一個起點,它包含了很多信息。下面是摘錄:

有3種方式在iPhone上混合音頻:

  • 音頻單元框架
    • 多通道混頻器 - 「讓你多音頻流混合到一個流」
    • 3D混音器單元 - 「你可以混合多個音頻流,指定立體聲輸出聲像,操縱採樣率」
  • 使用的OpenAL在遊戲開發

還要檢查以下內容樣品出來:iPhoneMultichannelMixerTest

兩個輸入總線創建每個輸入音量控制。還提供了一個整體調音臺輸出音量控制,每個總線可以啓用或禁用

+0

請注意,我不想播放這些文件(在iPhone上),只需對它們進行操作並保存到新文件中。 :)我會檢查鏈接。 – quano 2010-04-18 16:45:57

3

混合線性PCM的兩個聲音緩衝區只是將它們中的每個樣本值添加到一起的問題,當然,請確保您不要沒有溢出。通常你會在緩衝區中使用浮點值,所以問題是當你回到文件。您還應該在iPhone上提供CoreAudio,它具有以不同格式打開/讀取/寫入聲音文件的一切手段。我認爲還有一個更高級別的API可用於iPhone,它不在Mac上,查找蘋果文檔。

+0

是的,我也瞭解這一點。這並不難,但需要一些工作。我想有人以前一定要做到這一點,甚至可能爲此做了一個簡單的解釋。這會爲我節省一些時間。閱讀文件,增加價值並寫出來並不是我能想到的最令人激動的事情。:)它看起來像這樣一個微不足道的功能。我真的很驚訝,看起來好像是找到一個已經存在的lib來完成這個工作。到目前爲止,我還沒有在文檔中找到解釋如何打開多個文件的任何內容,並將它們放在特定位置,並將它們混合到一個文件中。 – quano 2010-04-18 17:59:01

+0

好的,但在API中有這方面的支持,如果我沒有記錯的話,你需要用你的文件格式的一些屬性填充一個結構體,然後將它發送給一些庫函數。因爲我已經完成了這個任務,不過我想說大量音頻格式的格式轉換並不是微不足道的,它都是由API支持和完成的。像一個時間線,我認爲你必須發明自己,除非它是實時播放你的後,它也支持API。但是它不應該太難做,因爲你可以通過(時間*樣本頻率)得到緩衝區索引。 – Fred 2010-04-18 18:30:52

2

如果您正在專門尋找Audacity的功能,它使用引擎蓋下的PortAudio(看起來像MIT許可證)。也許你可以嘗試使用它?