AVPlayerLayer 被音乐停止
AVPlayerLayer Stopped by Music
我正在使用 AVPlayerLayer
播放视频。视频没有声音。但是,如果用户正在后台播放音乐并且显示 AVPlayerLayer
,则音乐会停止。如果用户向上滑动并点击播放,视频将停止。
我什至将AVPlayer
的muted
属性设置为true
,但仍然出现这种情况。
如何防止 AVPlayerLayer
干扰用户可能正在播放的任何音乐?
视频解码似乎会中断音频应用程序,反之亦然(我认为它甚至会中断 您自己)。您可以通过在音频会话上配置 "mix with others" 来禁用此行为:
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
对于这种用例来说是必要的,甚至是显而易见的,我曾经有过复杂的理论,但我已经忘记了它们,而是更喜欢指向一些文档的指针。
p.s。我很确定上述两种解决方案都会为您的应用禁用远程控制事件。希望没关系。再一次,会喜欢一些 doco。
我正在使用 AVPlayerLayer
播放视频。视频没有声音。但是,如果用户正在后台播放音乐并且显示 AVPlayerLayer
,则音乐会停止。如果用户向上滑动并点击播放,视频将停止。
我什至将AVPlayer
的muted
属性设置为true
,但仍然出现这种情况。
如何防止 AVPlayerLayer
干扰用户可能正在播放的任何音乐?
视频解码似乎会中断音频应用程序,反之亦然(我认为它甚至会中断 您自己)。您可以通过在音频会话上配置 "mix with others" 来禁用此行为:
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
对于这种用例来说是必要的,甚至是显而易见的,我曾经有过复杂的理论,但我已经忘记了它们,而是更喜欢指向一些文档的指针。
p.s。我很确定上述两种解决方案都会为您的应用禁用远程控制事件。希望没关系。再一次,会喜欢一些 doco。