2015-07-28 2 views
4

В моем приложении я использую 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

пытаясь сейчас, спасибо! –

ответ

3

Вы должны установить опцию для аудио сеанса смешивать сеанс с другими:

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

Я был в состоянии решить эту проблему с комментариями GeneratorOfOne в. Единственное, что мне было нужно, чтобы запустить эти 2 строки кода перед запуском player.play ...

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

Swift 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) 
} 
Смежные вопросы