【问题标题】:Is there any relationship between an AVAudioEngine and an AVAudioSession?AVAudioEngine 和 AVAudioSession 之间有什么关系吗?
【发布时间】:2017-09-15 03:40:58
【问题描述】:

我知道这个问题的评分可能很差,但我一直在研究有关如何将音频输出重新路由到 iOS 设备上的扬声器的问题。

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

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

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


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

谢谢!

【问题讨论】:

  • 您考虑过阅读文档吗? o_O
  • 声音就是声音。 AVAudioSession 总是很重要
  • @l'l'l 是的,我已经尝试查看文档,但老实说,我还没有发现它提供的信息非常丰富。
  • @matt 所以即使我没有明确设置 AVAudioSession 它仍在使用?

标签: ios swift audio avaudioplayer


【解决方案1】:

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 吗?
  • 那么即使设备处于静音模式,如何播放声音?每个答案都说使用会话。但我不认为振荡器使用会话。 stackoverflow.com/questions/35289918/… 编辑:实际上,我刚刚开始了一个全新的/无关的 AVAudioSession,编辑它,它可以工作!
【解决方案2】:

是的,它没有明确注释,但是,我从 ios 开发人员文档中找到了此注释。

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

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

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2015-01-02
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多