AVAudioEngine和AVAudioSession之间有任何关系吗?

Log*_*gan 5 audio avaudioplayer ios swift

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

我看到用户的每个问题都谈到了使用你AVAudioSession重新路由它.但是,我没有使用AVAudioSession,我正在使用AVAudioEngine.

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

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


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

谢谢!

Ajh*_*lam 6

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/

  • 因此,如果我要编辑AVAudioSession,这会影响AVAudioEngine的使用方式吗?例如,如果我将我的AVAudioSession设置为使用PlayAndRecord类型,这是否会反过来影响我的AVAudioEngine? (2认同)