iOS中最底层最强大音频控制API : Audio Unit

412 阅读2分钟

以下概念是文中常用的词语,因为其含义一般直接用英文表达, 一般不需中文翻译,可将其理解为固定名词词组.

  • audio unit: 主要介绍的技术名称
  • audio processing graph: 另一种处理audio unit的技术
  • node: 承载audio unit的容器
  • input scope /output scope : 可理解为音频流动的位置(比如从input scope流向output scope)
  • input element : 连接输入端硬件(如麦克风)的一个组件.
  • output element : 连接输出端硬件(如扬声器)的一个组件.
  • bus: 与element概念相同,在文中强调信号流时使用“bus”,在强调音频单元的特定功能方面时使用“element”,\
  • I/O Units: 输入输出常用的audio unit类型,其中包括Remote I/O unit, Voice-Processing I/O, Generic Output unit三种类型.

注意每个element还可能具有input scope与output scope.

Overview

Audio Unit : iOS提供音频处理插件,支持混合,均衡,格式转换和实时输入/输出,用于录制,播放,离线渲染和实时对话,例如VoIP(互联网协议语音).可以从iOS应用程序动态加载和使用它.

Audio Unit通常在称为audio processing graph的封闭对象的上下文中工作,如图所示。在此示例中,您的应用程序通过一个或多个回调函数将音频发送到graph中的第一个audio unit,并对每个audio unit进行单独控制。 最终生成的I / O unit直接输出给连接的硬件.

生命周期

  • 运行时,获取对动态可链接库的引用,该库定义您要使用的audio unit
  • 新建一个audio unit实例
  • 根据需求配置audio unit
  • 初始化audio unit以准备处理音频
  • 开启audio unit
  • 控制audio unit
  • 用完后释放audio unit