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

13
我知道这个问题可能会得到负面评价,但我一直在研究如何将iOS设备上的音频输出重定向到扬声器。我阅读了每一个问答,都提到使用 AVAudioSession 来重新路由它。然而,我不使用 AVAudioSession,我使用的是 AVAudioEngine
所以,我的问题是,即使我使用 AVAudioEngine,我是否仍然需要 AVAudioSession
如果是这样,这两个对象之间有什么关系?或者有没有一种方法将 AVAudioEngine 连接到 AVAudioSession
如果不是这种情况,也就是说,AVAudioEngineAVAudioSession 之间没有关系,那么你应该如何重定向音频,使其从iOS设备的主扬声器播放,而不是从听筒播放。
谢谢!

你考虑过阅读文档吗?o_O - l'L'l
声音就是声音。AVAudioSession 总是很重要的。 - matt
1
@l'L'l 是的,我尝试过查看文档,但是老实说,我并没有发现它很有用。 - Logan
@matt 所以即使我没有明确设置 AVAudioSession,它仍然被使用? - Logan
2个回答

9

AVAudioSession 是iOS特有的API,用于协调应用程序之间的音频播放。例如,当来电时,音频会停止播放,或者当用户开始观看电影时,音乐播放也会停止。使用此API可以确保应用程序对此类事件的响应行为正确。

AVAudioEngine 是现代Objective-C API,用于播放和录制音频。它提供了一定程度的控制,以前您必须退回到Audio Toolbox框架的C API(例如实时音频任务)才能完成。音频引擎API是构建良好的低级API,因此如果必须要,则仍然可以退回到Audio Toolbox。

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

因此,它们之间没有包容关系。

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


3
如果我编辑AVAudioSession,这会影响AVAudioEngine的使用吗?例如,如果我将我的AVAudioSession设置为使用“播放和录制”类型,这会对我的AVAudioEngine产生任何影响吗? - Logan
那么如何在设备静音模式下播放声音呢?每个答案都说要使用会话。但我不认为振荡器使用会话。https://dev59.com/clsW5IYBdhLWcg3wKkve编辑:实际上,我刚刚启动了一个完全新的/不相关的AVAudioSession,对其进行了编辑,它可以工作! - pete

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接