我尝试使用MPMoviePlayerController
或AVPlayer
在我的应用中播放短视频。问题是(因为我的视频没有任何声音),我不想干扰其他应用在后台播放的声音。我尝试使用AVAudioSession
播放:
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryAmbient withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
[audioSession setActive:YES error:nil];
但我没有运气。视频一开始播放,背景音乐就停止了。我甚至试图将音频会话设置为非活动:
[[AVAudioSession sharedInstance] setActive:NO withOptions: AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
但在这种情况下,声音停止半秒钟,然后恢复,视频播放器停止播放。有没有什么方法可以实现我正在努力做的事情?谢谢。
4条答案
按热度按时间rsaldnfx1#
我想这对你来说已经无关紧要了,但对其他人来说可能是相关的。
没什么可做的,但这里有一些变通方法。关键是,当你初始化视频播放器时,将音频会话类别设置为环境,在这种情况下,它不会中断其他应用程序中的音频会话。然后,如果你需要“取消静音”视频,您可以将音频会话类别设置为默认(独奏环境)。它将中断其他应用程序中的音频会话,并将恢复播放带有声音的视频。
示例:
另外,我想FB应用程序也在做类似的事情:当视频开始播放静音,它不会中断其他应用程序的音频,但当用户按下视频,它会全屏与声音,在这一点上将有该视频的活动音频会话,所有其他应用程序将停止播放音频。
eoxn13cs2#
你在测试你的音乐bkg应用吗?如果没有,那么答案可能是大多数音乐应用都包含:
和实施方式,例如:
因此,他们停止播放,并开始它时,中断结束。(来电等)
dwbf0jvd3#
设置共享
AVAudioSession
的类别时,有一个“与其他人混合”选项:默认值为
AVAudioSession.Category.soloAmbient
,这说明了如何关闭其他应用的音频。5vf7fwbs4#
伟大的答案!这是一个斯威夫特5转换为那些感兴趣的。