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

Is there any relationship between an AVAudioEngine and an AVAudioSession?

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

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

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

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


如果不是这种情况,并且 AVAudioEngineAVAudioSession 之间没有任何关系,那么您如何重新路由音频以便它在 iOS 设备而不是听筒。

谢谢!

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

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

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

所以这个之间没有包含关系。

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

是的,它没有明确评论,但是,我从 ios 开发人员文档中找到了这条评论。

AVFoundation playback and recording classes automatically activate your audio session.

文件 Link : https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/ConfiguringanAudioSession/ConfiguringanAudioSession.html

希望对您有所帮助。