Apple 平台上如果涉及到音频采集, 很难避开 AudioUnit 这个工具库, AudioUnit 是 Audio Toolbox 下的一套有年头的 C API, 功能相对也比较强大, 虽然苹果最近几年推出并逐渐在其基础之后完善了一套...AVAudioUnit 的 OC/Swift 的 API, 但 AudioUnit 依然有很广泛的使用, 而且了解这套 C API 也对理解 AVAudioUnit 内部的实现和使用有很大的帮助....关于 AudioUnit 的文章是一个系列, 我希望能够把之前的经验结合一些实际的场景来介绍, 大概分为一下四个部分:
熟悉 IO Unit 结构和运行机制, 使用它来进行录制和播放
熟悉其他类型的 AudioUnit...可能是这样的:
输入硬件 (麦克风) -> 采集到的原始音频数据 -> 自定义处理音频数据 -> 处理后的音频数据 -> 输出设备 (扬声器 / 听筒)
我们可以将此分为两部分:
输入硬件 (麦克风)...Element 1 作为输入水管, 左侧 (Input Scope) 固定连接着硬件麦克风, 不可改动, 右侧 (Output Scope) 是水管的出口, 从这里, 我们就可以拿到采集到的音频数据.