2013-01-14 20 views
3

是否有庫函數來規範化聲音文件?我搜查了四周,但找不到任何。正常化音頻文件obj-c

我想能夠正常化一個聲音文件並將其設置到聲音文件中,因此只需要一次而不是實時進行。

這可以通過Core-Audio完成嗎?

回答

2

是的,它可以完成,但不是一個單一的函數調用。

您想要的功能實際上並不是CoreAudio,而是ExtendedAudioFile.h- AudioToolbox框架的一部分。這適用於iOS和MacOSX。我可以證明這很難找到。

該標題中感興趣的功能是ExtAudioFileOpenURL(),ExtAudioFileRead()ExtAudioFileWrite()

在大綱你做什麼:

  1. 使用ExtAudioFileOpenURL()打開輸入文件
  2. 使用ExtAudioFileGetProperty()與屬性ID kExtAudioFileProperty_FileDataFormat獲得AudioStreamBasicDescription描述文件。

  3. 可能將ASBD設置爲您想要的格式。 MacOSX上的AudioToolBox似乎比iOS更適合這一點。

  4. 計算分配大到足以容納整個音頻文件

  5. 一個緩衝閱讀與ExtAudioFileRead()整個文件 - 注:此調用可能不讀這一切一氣呵成 - 在大致相同的是因爲工作POSIX read()

  6. 執行規範化

  7. 使用ExtAudioFileCreateWithURL()創建輸出文件
  8. 使用ExtAudioFileWrite()寫的歸一化樣本。
  9. 處置兩個音頻文件。

該文檔鏈接到幾個示例項目,可以充當工作代碼的捐助者。你會發現,將樣本作爲浮點數進行歸一化要容易得多,但在iOS中,我無法自動使轉換工作,所以你可能必須格式化自己。

+0

謝謝,請看看這個。 – jarryd