【问题标题】:How to mute background audio while recording (using Audio Queue Services)如何在录制时静音背景音频(使用音频队列服务)
【发布时间】:2011-01-28 22:02:06
【问题描述】:

我有一个应用程序,它使用音频队列来记录语音用户输入。 这只会在短时间内发生,并且仅在用户按下按钮时发生。

我想让用户的背景音乐继续播放,除非在实际进行录制时将其静音或以低得多的音量播放(以避免录制从扬声器播放的音频)。

对于我的录制队列,我使用的是 PlayAndRecord 类别,并且我将 OverrideCategoryMixWithOthers 属性设置为 true。

【问题讨论】:

    标签: iphone audio audioqueueservices


    【解决方案1】:

    当他们添加了 AudioSessionSetActiveWithFlags API 和 kAudioSessionSetActiveFlag_NotifyOthersOnDeactivation 标志时,这个问题在 iOS4+ 中变得不那么严重了。

    要在录制时暂停背景音乐,您需要调用 AudioSessionSetActive(false),这将停用您的音频会话,然后将类别切换到 PlayAndRecord 模式,并将 OverrideCategoryMixWithOthers 属性设置为 false。

    现在,使用这些设置使用 AudioSessionSetActive(true) 重新激活您的会话,iPod/Pandora/etc 的音频会话将被中断并淡出并暂停。

    然后,当您的录制完成后,再次使用

    停用您的会话

    AudioSessionSetActiveWithFlags(false, kAudioSessionSetActiveFlag_NotifyOthersOnDeactivation);

    这将通知背景音乐应用他们的会话不再被中断,他们可以开始播放音乐。

    最后,您可以使用 MediaPlayback(或等效)模式再次设置音频会话,并将 OverrideCategoryMixWithOthers 属性再次设置为 true。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多