防止AVPlayer取消背景音频

问题描述:

在我的应用程序中,我使用AVPlayer播放简单的视频。这些视频没有任何音轨。问题是,当我播放它们时,所有背景音乐(不是来自我的应用程序)都停止播放。我如何防止这种情况?防止AVPlayer取消背景音频

有没有办法用AVPlayer播放视频而不取消背景音乐?

我的代码是:

let urlAsset = AVURLAsset(URL: urlLocal, options: nil) 
let item = AVPlayerItem(asset: urlAsset) 
self.videoPlayer = AVPlayer(playerItem: item) 

if let player = self.videoPlayer { 
    self.videoLayer = AVPlayerLayer(player: player) 
    if let layer = self.videoLayer { 

     layer.frame = self.view.bounds 
     self.view.layer.addSublayer(layer) 

     NSNotificationCenter.defaultCenter().addObserver(self, selector: "videoPlayerDidReachEnd:", name: AVPlayerItemDidPlayToEndTimeNotification , object: nil) 

     player.actionAtItemEnd = AVPlayerActionAtItemEnd.None 
     player.play() 
    } 
} 

谢谢!

+1

你尝试AVAudioSessionCategoryOptions? – Sandeep

+0

立即尝试,谢谢! –

您需要设置选项音频会话到您的会话与他人混用:

NSError *error; 
if (![[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&error]) 
{ 
    NSLog(@"audio session error: %@", error); 
} 

我能够与GeneratorOfOne的评论来解决这个问题。我唯一需要的是运行player.play之前运行这些2行代码...

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient, error: &error) 
AVAudioSession.sharedInstance().setActive(true, error: &error) 

雨燕3一些错误处理:

do { 
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient) 
} catch let error as NSError { 
    print(error) 
} 

do { 
    try AVAudioSession.sharedInstance().setActive(true) 
} catch let error as NSError { 
    print(error) 
}