ios - AVAudioEngine 和 AVAudioSession 之间有什么关系吗?

标签 ios swift audio avaudioplayer

我知道这个问题可能会得到不好的评价,但我一直在寻找询问如何将音频输出重新路由到 iOS 设备上的扬声器的问题。

我看到用户的每个问题都谈到使用您的 AVAudioSession 来重新路由它。但是,我没有使用 AVAudioSession,我使用的是 AVAudioEngine

所以基本上我的问题是,即使我使用的是 AVAudioEngine,我还应该有 AVAudioSession 吗?

如果是这样,这两个对象之间的关系是什么?或者有没有办法将 AVAudioEngine 连接到 AVAudioSession


如果不是这种情况,并且 AVAudioEngineAVAudioSession 之间没有任何关系,那么您如何重新路由音频以便它播放出主iOS 设备上的扬声器而不是听筒。

谢谢!

最佳答案

AVAudioSession 特定于 iOS 并协调应用程序之间的音频播放,例如,当来电时音频停止,或者当用户开始看电影时音乐播放停止。需要此 API 来确保应用程序正确响应此类事件

AVAudioEngine 是一个用于播放和录音的现代 Objective-C API。它提供了一定程度的控制,您以前必须下降到 Audio Toolbox 框架的 C API(例如,使用实时音频任务)。音频引擎 API 旨在与较低级别的 API 进行良好交互,因此如果需要,您仍然可以下拉至 Audio Toolbox。

此 API 的基本概念是构建音频节点图,范围从源节点(播放器和麦克风)和过度处理节点(混音器和效果器)到目标节点(硬件输出)。每个节点都有一定数量的输入和输出总线,这些总线具有明确定义的数据格式。这种架构使其非常灵活和强大。它甚至与音频单元集成。

所以这之间不存在包含关系。

来源链接:https://www.objc.io/issues/24-audio/audio-api-overview/

关于ios - AVAudioEngine 和 AVAudioSession 之间有什么关系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43486755/

相关文章:

objective-c - 将 Pod 安装的项目放入 Xcode 的另一个项目中。

java - Java:使用javazoom时控制台停止工作

haskell - 使用 Haskell 绑定(bind)保存脉冲音频流

iOS 辅助功能 : Custom voice over text for bundle display name

ios - 返回数组的快速函数

ios - 无法在 TableView Controller 中为单元格设置自定义类

ios - Coredata 总是更新行而不是快速插入新行

ios - swift3中使用串行队列调用父子函数

ios - Swift 和 Obj-C 中的 NSTimer

iphone - 我仍如何播放iPhone(ipod touch)被锁定但程序正在运行的声音?