iOS录音- AVAudioRecorder
音频采集 - PCM编码
1 | 模拟信号数字化必须经过三个过程,即抽样、量化和编码,以实现话音数字化的脉冲编码调制(PCM,Pulse Coding Modulation)技术 |
- 抽样
- 量化
-
编码- 抽样频率(Sampling Rate): 人对频率的识别范围是 20HZ - 20000HZ, 如果每秒钟能对声音做 20000 个采样, 回放时就足可以满足人耳的需求. 所以 22050 的采样频率是常用的, 44100已是CD音质, 超过48000的采样对人耳已经没有意义。这和电影的每秒 24 帧图片的道理差不多
- 位宽(bit depth): 每一个采样点都需要用一个数值来表示大小,这个数值的数据类型大小可以是:4bit、8bit、16bit、32bit 等等,位数越多,表示得就越精细,声音质量自然就越好,而数据量也会成倍增大。我们在音频采样过程中常用的位宽是 8bit 或者 16bit
- 声道数(channels): 声道数为 1 和 2 分别称为单声道和双声道 (iPhone只有一个麦克风,一个单声道的通道足够了,它把你的数据需求削减了一半)
- 比特率(bit rate): 表示经过编码(压缩)后的音频数据每秒钟需要用多少个比特来表示,单位常为kbps
音频压缩
常见的音频编码格式: MP3、AAC、WAV
AVAudioSession
- Category
Category | 是否允许音频播放/录音 | 是否打断其他不支持混音APP | 是否会被静音键或锁屏键静音 |
---|---|---|---|
ambient | 只支持播放 | ❎ | ✅ |
soloAmbient (默认) | 只支持播放 | ✅ | ✅ |
playback | 只支持播放 | ✅,可以重写为❎ | ❎ |
record | 只支持录制 | ✅ | ❎(锁屏下仍可录制 |
playAndRecord | 支持播放,支持录制 | ✅,可以重写为❎ | ❎ |
audioProcessing | 不支持播放,不支持录制 | ✅ | ❎ |
multiRoute | 支持播放,支持录制 | ✅ | ❎ |
- Mode
- Options
- 激活 AVAudioSession.sharedInstance().setActive(true)