我創建了一個音頻播放器像車庫樂隊。我怎樣才能搭配2個音頻文件轉換成1個文件
爲此,我必須在運行時將2種不同的音頻文件格式混合到1個文件中。
實施例:
用戶推動drum button
和violin button
同時。
然後用戶推動disk button
保存那曲調。
那麼如何將它們混合成1個文件(異步和完美的持續時間)?
我創建了一個音頻播放器像車庫樂隊。我怎樣才能搭配2個音頻文件轉換成1個文件
爲此,我必須在運行時將2種不同的音頻文件格式混合到1個文件中。
實施例:
用戶推動drum button
和violin button
同時。
然後用戶推動disk button
保存那曲調。
那麼如何將它們混合成1個文件(異步和完美的持續時間)?
這對於蘋果的新AVAudioEngine來說非常簡單,它專門用於這種情況。
而且看它的WWDC視頻......
對於未來的讀者請注意:
當我輸入這個答案時,問題沒有指定任何環境/操作系統/語言,它只是問如何合併音頻。
基本概念:等波互相放大,相反波相互衰減。
因此,基本思路是:
0
代替比最長的軌道花費更少時間的軌道)。實施例:3單磁道(T
=軌道,C
=信道,Sn
=單個試樣n
的值或0
):
resultTrack_C1_Sn = (T1_C1_Sn + T2_C1_Sn + T3_C1_Sn)/totalTracks
當多通道(如立體聲):重複用於每個通道交錯結果(左聲道優先)。當然,你可以在一個'跑'中做到這一點。
注意(對於PCM):
<= 8 bits
採樣分辨率是在PCM 無符號(所以0
是127
,換句話說,負波擺動低於127,正波擺動是127以上的),你需要說明這一點。>8 bits
是簽署所以你可以安全地使用上面的基本公式(因爲-4 + -5 = -9
)。這應該讓你開始在基本概念。
如果您有任何演示或示例代碼或方法(鏈接),請告訴我或發送給我.thank您。 – Mirant 2014-10-10 12:25:36
對不起,我目前正在JavaScript中做這個還沒有準備好炫耀。然而,除了寫一個正確的波頭,這對於* basic * 16bit 2ch 41.1khz來說是微不足道的 - 對於分辨率不是8位倍數的PCM格式,您可以在RIFF/WAVE規格和在線代碼中有98%的方程是錯誤的(它們意外地用於8位的倍數),但這是另一個問題的原因 - )這裏概述的步驟是正確的,應該讓你開始。實際上,它正是*我正在做的事情,我用一些DAW來驗證結果。 – GitaarLAB 2014-10-10 12:31:59
的[iPhone可能重複:編程混合兩個音頻文件?](http://stackoverflow.com/questions/8638731/iphone-mix-two-audio-files-programmatically) – matt 2014-10-10 13:18:10