Core Audio(音频单元)音频会话和 MPVolumeView

Posted

技术标签:

【中文标题】Core Audio(音频单元)音频会话和 MPVolumeView【英文标题】:Core Audio (Audio Units) audio session and MPVolumeView 【发布时间】:2013-10-11 15:08:07 【问题描述】:

我在开发一个 VOIP 应用程序。 我使用 Core Audio 音频单元来播放和录制音频。我需要能够操纵音量和输出设备。我正在尝试使用 MPVolumeView 设置音量并选择输出设备。

我的问题是:当我开始使用(开始播放和捕获 RemoteIO 音频单元)音频单元时,似乎 MPVolumeView 不再控制我的会话音量,而是控制系统范围的声音首选项。同时硬件按钮控制音频单元播放的声音音量。此外,当我开始使用音频单元 MPVolumeView 开始显示按钮以更改输出设备但在此之前它没有。

似乎 MPVolumeView 控制某些系统范围的音频会话的音量,但是当我开始使用音频单元时,会创建另一个应用范围(甚至音频单元范围)的音频会话并用于播放声音。

所以问题是如何让 MPVolumeView 控制我的 Core Audio 音频会话的音量?

我会很感激任何关于为什么会发生这种情况的提示。我几乎整天都在谷歌上搜索,我看到有些人有相关的问题,但没有人得到任何提示:(。如果需要,我也可以发布更多细节。

【问题讨论】:

好吧,这似乎是 ios 错误。我已经向 Apple 提交了一份错误报告,他们甚至回复我说这是某人的错误的“重复”。所以我仍在等待他们方面的任何解决方案。同时,如果有人能指出一些解决方法,我将不胜感激。 【参考方案1】:

已被 Apple 工程师确认为错误。

更多细节 - MPVolumeView 应该绑定到特定的音频路由(更广泛地说,如音频路由 + 音频类别 + 模式等),它适用于几个最常见的路由(例如耳机 + 播放类别+ 默认模式)但不是您可以创建的所有自定义路由。

所以基本上当一个人创建一些自定义路由时,MPVolumeView 仍然试图控制它的最后一个(可行的)或默认路由。

【讨论】:

最好有问题 ID 供参考。

以上是关于Core Audio(音频单元)音频会话和 MPVolumeView的主要内容,如果未能解决你的问题,请参考以下文章

带有 Core Audio AudioQueue 的 AVFoundation 会话

实现 Core Audio API 事件

iOS:音频单元 vs OpenAL vs Core Audio

Core Audio AudioFIleReadPackets... 寻找原始音频

Core Audio 大(压缩)文件播放和内存占用

WebRTC Windows Native音频中的Core Audio API