iOS上所有和音频相关的都在CoreAudio里面。但是CoreAuido是个非常庞大的库,刚开始入门多半会被其复杂调用吓到。
如果需求是播放一段音频(File、Buffer或URL),AVAudioPlayer通常都可以满足需求。
如果对性能有要求,或者是播放流式Buffer,那就得用到Audio Queue Services。这里要手动管理一下缓冲队列,还好官方文档上有一些简单可用的代码。
Audio Queue Services另以个麻烦之处是,在入列缓冲区的时候,要指定AudioStreamPacketDescription参数。Audio Queue播放是以Packet形式,如何分包对不了解音视频格式的人很麻烦。
解决这个有两种方式,1、Extended Audio File Services有一些API,可用帮你计算每个包的大小;2、Audio File Service或Audio File Stream Services更智能,你只管塞数据给它,它自动把包组好给你。至于如何选择,建议都去看看。
一般的播放音频需求,这些知识差不多就可以应付了。