如果開發項目需要解析音頻文件流,可以使用 iOS 的 Audio File Stream Services。 Audio File Stream Services 支持的音頻數據格式:
AIFF
AIFC
WAVE
CAF
NeXT
ADTS
MEPEG Audio Layer 3
AAC
解析音頻文件流的過程如下:
使用 AudioFileStreamOpen 方法創建音頻文件流的解析器:
OSStatus AudioFileStreamOpen ( void *inClientData, AudioFileStream_PropertyListenerProc inPropertyListenerProc, AudioFileStream_PacketsProc inPacketsProc, AudioFileTypeID inFileTypeHint, AudioFileStreamID *outAudioFileStream );
設置解析器獲取音頻數據和元數據的回調方法:AudioFileStream_PacktsProc 和 AudioFileStream_propertyListtenerProc。
獲取流數據。通過AudioFileStreamParseBytes 把數據發送給解析器:
OSStatus AudioFileStreamParseBytes ( AudioFileStreamID inAudioFileStream, UInt32 inDataByteSize, const void *inData, UInt32 inFlags );
當解析器獲取到可用的音頻buffer,並傳回回調方法(AudioFileStream_PacktsProc)。在回調方法可以播放數據,或者把數據寫進文件,或者其它處理。
當解析器獲取到元數據,會調用設置好的屬性回調方法(AudioFileStream_propertyListtenerProc)。在回調方法通過屬性ID 獲取屬性值。
當完成數據流的解釋,使用 AudioFileStreamClose 關閉並釋放解析器。
OSStatus AudioFileStreamClose ( AudioFileStreamID inAudioFileStream );