【发布时间】:2010-12-25 01:06:39
【问题描述】:
在文档中,我看到了几个 Apple 音频框架。它们似乎都针对播放和录制音频。所以我想知道它们之间的最大区别是什么?
- 音频工具箱
- 音频单元
- AV 基金会
- 核心音频
我是否错过了一个很好地概述所有这些的指南?
【问题讨论】:
-
现在还有AudioKit audiokit.io
标签: iphone audio core-audio avfoundation
在文档中,我看到了几个 Apple 音频框架。它们似乎都针对播放和录制音频。所以我想知道它们之间的最大区别是什么?
我是否错过了一个很好地概述所有这些的指南?
【问题讨论】:
标签: iphone audio core-audio avfoundation
Core Audio 是所有框架中最低级别的,也是最古老的。
Audio Toolbox 位于 Core Audio 之上,它提供了许多不同的 API,可以更轻松地处理声音,但仍然可以为您提供很多控制权。有 ExtAudioFile、AudioConverter 和其他几个有用的 API。
Audio Unit 是一个框架,用于处理采样音频数据和 MIDI 的音频处理链。它是混音器和各种过滤器和效果器(例如混响)生效的地方。
AV Foundation 是一个新的、相当高级的 API,用于在 iPhone 操作系统上录制和播放音频。所有这些都在 OS X 和 iOS 上可用,但 AV Foundation 需要 OS X 10.8+。
【讨论】:
.installTap(onBus: 0, ...) 时,我使用的是哪个框架?如果我需要实时处理音频(例如用于 FFT/语音活动检测),我可以从这里以高性能的方式进行处理,还是需要更深入?希望通过实际权衡得到答案,例如响应时间或内存成本。
本网站对不同 API 的核心功能进行了简短而出色的概述: http://cocoawithlove.com/2011/03/history-of-ios-media-apis-iphone-os-20.html
【讨论】:
Core Audio 实际上并不是一个框架,而是一个包含许多不同框架的基础架构。事实上,iOS 扬声器发出的任何音频都由 Core Audio 管理。
您可以获得的 Core Audio 中的最低级别是使用音频单元,您可以通过使用 AudioToolbox 和 AudioUnit 框架来使用它。
AudioToolbox 框架还提供了更高级别的抽象来处理使用 AudioQueues 播放/录制音频,或使用各种转换器和文件服务管理各种音频格式。
最后,AV Foundation 提供了播放特定文件的高级访问权限,MediaPlayer 让您可以访问(和播放)您的 iPod 库。
【讨论】:
我对 Core Audio 及其(包含)框架进行了简要的图形概述:
最接近硬件的框架是Audio Unit。基于此,有OpenAL 和AudioToolbox 和AudioQueue。在顶部,您可以找到 Media Player 和 AVFoundation(音频和视频)框架。
现在取决于你想做什么:只是一个小录音,使用AVFoundation,这是最容易使用的。 (媒体播放器没有录制选项,顾名思义,它只是一个媒体播放器。)
您想进行严肃的实时信号处理吗?使用音频单元。但请相信我,这是最难的方式。 :-)
Apple 在 iOS 8.0 中引入了 AVAudioEngine,这是 AV Foundation 中基于 Objective-C/Swift 的音频图系统。这封装了来自音频单元的一些脏 C-stuff。由于音频单元的复杂性,它可能值得一看。
Apple 文档中的进一步阅读:
【讨论】: