AVAudioEngine和AVAudioSession之间是否有任何关系?

时间:2017-04-19 04:58:52

标签: ios swift audio avaudioplayer

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

我看到用户的每个问题都谈到了使用AVAudioSession重新路由它。但是,我没有使用AVAudioSession,我使用{{1} }。

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

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

如果不是这种情况,并且AVAudioSessionAVAudioEngine之间没有任何关系,那么如何重新路由音频以使其在iOS设备上播放主扬声器而不是而不是耳机。

谢谢!

2 个答案:

答案 0 :(得分:6)

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

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

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

所以这之间没有包容关系。

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

答案 1 :(得分:1)

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

  

AVFoundation播放和录制课程会自动激活您的音频会话。

文档链接:https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/ConfiguringanAudioSession/ConfiguringanAudioSession.html

我希望这对你有所帮助。