2009-09-25 202 views
4

有沒有一種方法可以將我的iPhone應用程序中的mp3文件轉換爲wav/aiff?我有一個mp3,但我想將它與其他文件相結合,我知道這可以做的唯一方法是使用PCM格式。iPhone - 將mp3轉換爲wav?

任何人都可以幫助我嗎?

謝謝。

有些事情我想

我嘗試使用AudioConverterFillComplexBuffer()方法和其回調到MP3到咖啡館,但每包和每幀轉換爲字節讀爲0。任何想法,我怎麼能或我是否可以使用這個功能?

再次感謝。

+1

您應該可以將核心音頻標記添加到此問題。 – invalidname 2009-09-25 22:13:20

+0

也許這應該是在SU? – 2009-09-25 22:17:31

回答

12

WAV和AIFF經常(通常?)包含PCM,那麼有什麼異議?或者你是否說你必須將MP3數據傳輸到PCM以混音(可能是在多聲道混音器音頻單元中)。如果你認真想這樣做,看核心音頻,具體如下:

  • 音頻文件服務(讀取MP3格式,寫AIFF或WAV)
  • 音頻文件轉換服務(到MP3數據轉換成PCM和/或如果您要寫入文件,則從PCM編碼爲其他編解碼器)。請注意,給定的轉換器不能在兩種編碼格式之間轉換;你可以做MP3到PCM或PCM到AAC,但要做MP3到AAC,你需要兩個轉換器。
  • 擴展音頻文件服務,它結合了上述兩個。

查看Core Audio SDK中的ConvertFile example。這將打開一個讀取源文件,描述目標文件的所需格式,從一個緩衝區中讀取緩衝區並將它們寫入另一個緩衝區。該代碼展示了文件服務+轉換服務的單獨使用以及ExtAudioFiles的便捷使用。

此外,請務必理解編解碼器和文件格式之間的差異以及哪些編解碼器/格式組合是合法的。當我第一次發現PCM在WAV中必須是小端,在AIFF中是大端時,我感到很驚訝。

+0

看起來像代碼中缺少一些文件。我從上面的鏈接下載的那個缺少「PublicUtility」組中的文件。 – lostInTransit 2009-09-26 02:55:49

+2

在我的系統上,PublicUtility文件位於/ Developer/Extras/CoreAudio中,我相信當您安裝Xcode工具時,它們將作爲Core Audio SDK的一部分進行安裝。 – invalidname 2009-09-26 09:58:27

0

你或許可以用正確的Core Audio單元來做到這一點,但它可能會使用大量的CPU。如果可以的話,你應該提前轉換數據(也許在編譯時?)。