2013-02-18 6 views
13

Używam AVPlayer aby odtwarzać dźwięk z URLstan AVPlayer zawsze AVPlayerStatusReadyToPlay

W viewDidLoad:

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

self.player = [AVPlayer playerWithPlayerItem:playerItem]; 

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

[player play]; 

Observer

- (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"); 


     } 
    } 
} 

ale gracz czasami jest zablokowany i nie odtwarzać dźwięk, ale także status to AVPlayerStatusReadyToPlay. Nigdy nie przechodzi do AVPlayerStatusFailed ani AVPlayerItemStatusUnknown. Ponieważ chcę poradzić sobie z błędem AVPlayera, musi on również wejść w to. Proszę pomóż!!

Odpowiedz

31

Powinieneś obserwować status CurrentItem. AVPlayer nie powiódł się z powodu niepowodzenia AVPlayerItem, jeśli coś poszło nie tak, zaczyna się od AVPlayerItem, a następnie AVPlayer.

try:

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

w observeValueForKeyPath:

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

można spojrzeć z obsługą AVPlayer lub używać go bezpośrednio od HysteriaPlayer, mojego projektu open source.

+0

Bardzo dziękuję :) Jesteś zbawicielem :) – Srikanth

+0

DZIĘKUJEMY !!! Ten kod mi pomógł! –

+0

** Dokładnie ** tego, czego szukałem, dzięki! – zpasternack