如果开发项目需要解析音频文件流,可以使用 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 );
转载于:https://blog.51cto.com/metoo/1316809