2

我正在使用AVPlayerLayer播放视频。视频没有声音。但是,如果用户正在后台播放音乐并AVPlayerLayer显示 ,则音乐停止。如果用户向上滑动并点击播放,视频就会停止。

我什至设置了to的muted属性,但这仍然发生。AVPlayertrue

如何防止AVPlayerLayer干扰用户可能正在播放的任何音乐?

4

1 回答 1

2

视频解码似乎会打断音频应用程序,反之亦然(我认为它甚至可以打断你自己)。您可以通过在音频会话中配置“与他人混合”来禁用此行为:

NSError *error;

if (![[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&error]) {
    // handle error
}

if (![[AVAudioSession sharedInstance] setActive:YES error:&error]) {
    // handle error
}

我不知道为什么,但是设置一个AVAudioSessionCategoryAmbient没有选项的简单类别也可以:

if (![[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&error]) {
    // handle error
}

我曾经有复杂的理论来解释为什么mix-with-others这种用例是必要的,甚至是显而易见的,但我已经忘记了它们,而是更喜欢指向一些文档的指针。

ps 我很确定上述两种解决方案都会为您的应用禁用远程控制事件。希望没关系。再一次,会喜欢一些doco。

于 2015-12-25T13:37:20.537 回答