2013-02-18 4 views
13

ich AVPlayer bin mit Audio von einer URLAVPlayer Status immer AVPlayerStatusReadyToPlay

In ViewDidLoad spielen:

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


     } 
    } 
} 

aber der Spieler manchmal

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

self.player = [AVPlayer playerWithPlayerItem:playerItem]; 

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

[player play]; 

Observer ist fest und nicht Spielen Sie den Ton ab, aber auch der Status ist AVPlayerStatusReadyToPlay. Es geht niemals in AVPlayerStatusFailed oder AVPlayerItemStatusUnknown. Da ich den Fehler von AVPlayer behandeln möchte, muss er auch in diese gehen. Bitte helfen Sie !!

Antwort

31

Sie sollten den Status von CurrentItem beobachten. AVPlayer ist fehlgeschlagen, weil AVPlayerItem fehlgeschlagen ist. Wenn irgendetwas schief gelaufen ist, beginnt es mit AVPlayerItem und dann AVPlayer.

Versuch:

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

in Ihrem observeValueForKeyPath:

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

Sie einen Blick von AVPlayer der Handhabung nehmen oder es direkt verwenden, um von HysteriaPlayer, meinem Open-Source-Projekt.

+0

Super danke :) Du bist der Retter :) – Srikanth

+0

DANKE !!! Dieser Code hat mir geholfen! –

+0

** Genau ** was ich gesucht habe, danke! – zpasternack