经典的音频播放流程
1、读取 MP3数据
2、解析采样率、码率、时长等信息,分离 MP3 中的音频帧
3、对分离出来的音频帧解码得到 PCM 数据
4、对 PCM 数据进行音效处理(均衡器、混响器等,这一步非必须)
5、把 PCM 数据解码成音频信号
6、把音频信号交给硬件播放
7、重复1-6步,直到播放完成
iOS 系统中,apple 对上述的流程进行了封装,并提供了不同层次的接口(图片来自官方文档)
• Audio File Services:读写音频数据,可完成播放流程的第2步
• Audio File Stream Services:对音频进行解码,可完成播放流程中的第2步
• Audio Converter Services:音频数据转换,可完成播放流程中的第3步
• Audio Processing Graph Services:音频处理模块,可完成播放流程中的第4步
• Audio Unit Services:播放音频数据,可以完成播放流程中的第5、6步
• Extended Audio File Services: Audio File Services和Audio Converter Services的结合体
• AVAudioPlayer/AVPlayer(AVFoundation): 高级接口,可完成整个音频播放流程(包括本地文件播放和和网络流播放,第4步除外)
• Audio Queen Services: 高级接口,可以进行录音和播放,可以完成播放流程中的第3、5、6步
下图描述的是使用 AudioFile + AudioConverter + AudioUnit进行音频播放的流程(图片来自官方文档)
文章参考自码农人生的博客
此外,大家不喜勿喷,这只是小白的进化过程!