RemoteIO 的 AudioSession 设置与 iPod 配合得很好

Posted

技术标签:

【中文标题】RemoteIO 的 AudioSession 设置与 iPod 配合得很好【英文标题】:AudioSession Settings for RemoteIO to play nice with iPod 【发布时间】:2011-08-29 18:28:04 【问题描述】:

正如我之前发现的here。

如果您在使用远程 I/O 回调播放音频时开始运行 AVAssetReader,除非您允许 iPod 与...混合,否则启动 AVAssetReader 将阻止远程 I/O 回调。

UInt32 audioCategory = kAudiosessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(audioCategory),&audioCategory);

AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof (UInt32), &(UInt32) 1);

但是我发现这会阻止使用音频远程控制调用作为设置here。

所以...

我需要“MixWithOthers”才能使用 AVAssetReader 我需要关闭“MixWithOthers”才能使用音频遥控器

有谁知道我可以如何设置我的 AudioSession 以便我可以同时使用它们?

【问题讨论】:

我也有同样的问题。当我使用 AVAssetReader 从 iPod 库中读取时,我正在使用音频单元回调处理音频。如果我没有将 MixWithOthers 设置为 TRUE,则每次从 AVAssetReader 读取都会中断播放。我正在考虑一种不同的方法来看看它是否有效。特别是如果我使用音频队列服务而不是音频单元,我想知道它是否会起作用。你有过成功吗? 当我的 MixWithOther 为 TRUE 时,我的 AVAssetReaders 与播放混合,但 RemoteAudio 控件不起作用。当我有 MixWithOther FALSE 时,我有 AVAssetReader 中断播放。我对音频队列有同样的结果,但请告诉我它是否适合你。 看起来另一个应用程序也处理来自 iPod 库的音频也有同样的问题,当使用 MixWithOthers 时远程事件被阻止。我认为需要有一个新的音频设置来启用 AVAssetReader 与正在运行的音频单元相同。似乎许多应用都想利用这种功能组合。 【参考方案1】:

现在在 iOS 5 中有效。正确的处理方法是关闭 MixWithOthers。 AVAssetReader 将不再停止音频播放的回调。

【讨论】:

以上是关于RemoteIO 的 AudioSession 设置与 iPod 配合得很好的主要内容,如果未能解决你的问题,请参考以下文章

从代码控制 AudioSession

设置音频单元的音量 (kAudioUnitSubType_RemoteIO)

将 remoteio 与 AudioServicesPlaySystemSound 一起使用

运行时的 RemoteIO 配置

是否可以列出当前在应用程序中的所有 RemoteIO 音频单元?

混音器 AudioUnit 到 RemoteIO AudioUnit