音频笔记1
学习地址:iOS音频播放一到八
一. 基础##
1.基础###
计算机音频播放依靠音频文件,音频文件将声音信息——采集,量化,编码。生成数字信号。
人耳听到的声音频率:20HZ~2WHZ
根据奈奎斯特理论,数字信号必须高于人耳频率两倍才可以还原原声。所以音频信息采集为40HZ~4WHZ,ex:CD音频采样44.1KHZ。
声音信息,量化过程成为脉冲编码调试(Pulse Code Modulation,简称PCM)。
PCM数字信号音频是完全无损的,PCM音质优秀但体积庞大。所以出现很多不同音频格式压缩:
无损压缩:ALAL,APE,FLAC
有损压缩:MP3,WMA,AAC,OGG
目前常见音频压缩格式MP3。MP3格式舍弃MPC音频数据中人听觉不敏感的部分,MP3直接砍掉高频部分,码率越低砍掉越多。
MP3的码率(BitRate)代表了MP3数据的压缩质量,常见:128kbit/s,160kbit/s,320kbit/s。码率越高声音质量越高。
MP3的编码,常见:固定码率(CBR),可变码率(VBR)。
MP3格式中的数据通常两部分组成:
- 第一部分:ID3(存储歌名,演唱者,专辑,音轨数等信息)
- 第二部分:音频数据(以帧-frame 为单位存储,每个音频都有自己的帧头,下图所示一个MP3文件帧结构图)。每一帧都有自己的帧头,其中存储了采样率等编码必须的信息,所以每一帧都可以独立于文件存储和播放,这个特性加上高性能压缩比使得MP3成为音频流播放的主流格式。帧头之后存储音频数据,这些音频数据是若干PCM数据帧经过压缩算法压缩得到的,对CBR的MP3数据来说每个帧包含的PCM数据帧都是固定的,而VBR是可变的。

2. iOS音频播放概述###
iOS音频播放流程(以MP3为例):
- 1.读取MP3文件
- 2.解析采样率,码率,时常等信息,分离MP3中音频帧
- 3.把分离出来的音频帧解码得到PCM数据
- 4.对PCM数据进行音效处理(据衡器,混响器,非必需)
- 5.把PCM数据解码成音频信号
- 6.把音频信号交给硬件播放
- 7.重复1-6步,直到播放完成
在iOS系统中对上述流程进行了封装,提供了不同层次的接口:

- 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 Queue Services:完成流程第[3,5,6]步,可进行录音和播放,高级接口;
- OpenAL:用于游戏音频播放;
根据需求选择接口###
- 1.简单音频播放,AVFoundation。
- 2.播放并且存储音频,Audio File Streame Services 和 Audio Queue Services。可以帮你先把音频数据下载到本地,一边下载一边用NSFileHandler 等接口读取本地音频,并且交给Audio File Stream Services 或者Audio File Services 解析分离音频帧,分离出来的音频帧可以交给Audio Queue Services 进行解码播放。如果是本地文件直接读取文件解析即可。
- 3.如果你开发的是专业音乐播放软件,需要对音频施加音效(据衡器,混响器),那么除了数据的读取和解析以外还需要Audio Converter Services 把音频转换成PCM数据,再由Audio Unit + AUGraph 来进行音效处理和播放(但目前多数带音频的app都是自己开发音效模块来处理PCM数据,这部分功能自行开发在定义性和扩展性上比较强,PCM数据处理通过音效处理器处理完成就开始使用Audio Unit播放了,当然Audio Queue 也可以直接对PCM数据进行播放。)

二. AudioSession##
Audio Session :
- 确定app如何使用音频(播放?录音?)
- 选择app的I/O设备(输入麦克风,输出耳机,手机外放和airplay)
- 协调app的音频播放和系统以及其它app的行为(系统电话需要打断,电话结束需要恢复,按下静音按钮是否歌曲需要静音等)


浙公网安备 33010602011771号