【问题标题】:What's the difference between the Apple audio frameworks?Apple 音频框架之间有什么区别?
【发布时间】:2010-12-25 01:06:39
【问题描述】:

在文档中,我看到了几个 Apple 音频框架。它们似乎都针对播放和录制音频。所以我想知道它们之间的最大区别是什么?

  • 音频工具箱
  • 音频单元
  • AV 基金会
  • 核心音频

我是否错过了一个很好地概述所有这些的指南?

【问题讨论】:

标签: iphone audio core-audio avfoundation


【解决方案1】:

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/语音活动检测),我可以从这里以高性能的方式进行处理,还是需要更深入?希望通过实际权衡得到答案,例如响应时间或内存成本。
【解决方案2】:

本网站对不同 API 的核心功能进行了简短而出色的概述: http://cocoawithlove.com/2011/03/history-of-ios-media-apis-iphone-os-20.html

【讨论】:

    【解决方案3】:

    Core Audio 实际上并不是一个框架,而是一个包含许多不同框架的基础架构。事实上,iOS 扬声器发出的任何音频都由 Core Audio 管理。

    您可以获得的 Core Audio 中的最低级别是使用音频单元,您可以通过使用 AudioToolbox 和 AudioUnit 框架来使用它。

    AudioToolbox 框架还提供了更高级别的抽象来处理使用 AudioQueues 播放/录制音频,或使用各种转换器和文件服务管理各种音频格式。

    最后,AV Foundation 提供了播放特定文件的高级访问权限,MediaPlayer 让您可以访问(和播放)您的 iPod 库。

    【讨论】:

      【解决方案4】:
      【解决方案5】:

      我对 Core Audio 及其(包含)框架进行了简要的图形概述:

      最接近硬件的框架是Audio Unit。基于此,有OpenALAudioToolboxAudioQueue。在顶部,您可以找到 Media PlayerAVFoundation(音频和视频)框架。

      现在取决于你想做什么:只是一个小录音,使用AVFoundation,这是最容易使用的。 (媒体播放器没有录制选项,顾名思义,它只是一个媒体播放器。)

      您想进行严肃的实时信号处理吗?使用音频单元。但请相信我,这是最难的方式。 :-)

      Apple 在 iOS 8.0 中引入了 AVAudioEngine,这是 AV Foundation 中基于 Objective-C/Swift 的音频图系统。这封装了来自音频单元的一些脏 C-stuff。由于音频单元的复杂性,它可能值得一看。

      Apple 文档中的进一步阅读:

      【讨论】:

      猜你喜欢
      • 2022-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-16
      • 2018-09-12
      • 2011-07-18
      相关资源
      最近更新 更多