iOS 音頻文件流解析


如果開發項目需要解析音頻文件流,可以使用 iOS 的 Audio File Stream Services。 Audio File Stream Services 支持的音頻數據格式:


  • AIFF

  • AIFC

  • WAVE

  • CAF

  • NeXT

  • ADTS

  • MEPEG Audio Layer 3

  • AAC


解析音頻文件流的過程如下:


  1. 使用 AudioFileStreamOpen 方法創建音頻文件流的解析器:

    OSStatus  AudioFileStreamOpen (
       void                                  *inClientData,
       AudioFileStream_PropertyListenerProc  inPropertyListenerProc,
       AudioFileStream_PacketsProc           inPacketsProc,
       AudioFileTypeID                       inFileTypeHint,
       AudioFileStreamID                     *outAudioFileStream
    );


    設置解析器獲取音頻數據和元數據的回調方法:AudioFileStream_PacktsProc 和 AudioFileStream_propertyListtenerProc。


  2. 獲取流數據。通過AudioFileStreamParseBytes 把數據發送給解析器:

    OSStatus AudioFileStreamParseBytes (
       AudioFileStreamID  inAudioFileStream,
       UInt32             inDataByteSize,
       const void         *inData,
       UInt32             inFlags
    );

    當解析器獲取到可用的音頻buffer,並傳回回調方法(AudioFileStream_PacktsProc)。在回調方法可以播放數據,或者把數據寫進文件,或者其它處理。


    當解析器獲取到元數據,會調用設置好的屬性回調方法(AudioFileStream_propertyListtenerProc)。在回調方法通過屬性ID 獲取屬性值。


  3. 當完成數據流的解釋,使用 AudioFileStreamClose 關閉並釋放解析器。

    OSStatus AudioFileStreamClose (
       AudioFileStreamID inAudioFileStream
    );


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章