2013-02-18 2 views
13

Я использую AVPlayer для воспроизведения звука с URLстатус AVPlayer всегда AVPlayerStatusReadyToPlay

В ViewDidLoad:

self.playerItem = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:imageText]]; 

self.player = [AVPlayer playerWithPlayerItem:playerItem]; 

[player addObserver:self forKeyPath:@"status" options:0 context:nil]; 

[player play]; 

наблюдателей

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
         change:(NSDictionary *)change context:(void *)context { 
    if (object == player && [keyPath isEqualToString:@"status"]) { 
     if (player.status == AVPlayerStatusReadyToPlay) { 
      //[playingLbl setText:@"Playing Audio"]; 
      NSLog(@"fineee"); 
      [playBtn setEnabled:YES]; 
     } else if (player.status == AVPlayerStatusFailed) { 
      // something went wrong. player.error should contain some information 
      NSLog(@"not fineee"); 
      NSLog(@"%@",player.error); 

     } 
     else if (player.status == AVPlayerItemStatusUnknown) { 
      NSLog(@"AVPlayer Unknown"); 


     } 
    } 
} 

но игрок иногда застревает и не воспроизводить аудио, но затем статус AVPlayerStatusReadyToPlay. Он никогда не входит в AVPlayerStatusFailed или AVPlayerItemStatusUnknown. Поскольку я хочу обрабатывать ошибку AVPlayer, он также должен войти в них. Пожалуйста помоги!!

ответ

31

Вы должны соблюдать статус CurrentItem. AVPlayer не удалось из-за ошибки AVPlayerItem, если что-то пошло не так, оно начинается с AVPlayerItem, затем с AVPlayer.

попробовать:

[item addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil]; 

в вашем observeValueForKeyPath:

if (object == audioPlayer.currentItem && [keyPath isEqualToString:@"status"]) { 
    if (audioPlayer.currentItem.status == AVPlayerItemStatusFailed) { 
     NSLog(@"------player item failed:%@",audioPlayer.currentItem.error); 
    } 
} 

Вы можете посмотреть на обработку AVPlayer или использовать его непосредственно из HysteriaPlayer, моего открытого исходного проекта.

+0

Супер спасибо :) Вы спаситель :) – Srikanth

+0

СПАСИБО !!! Этот код помог мне! –

+0

** Точно, что я искал, спасибо! – zpasternack

Смежные вопросы