2013-02-18 27 views
13

Tôi đang sử dụng AVPlayer để chơi âm thanh từ một URLtình trạng AVPlayer luôn AVPlayerStatusReadyToPlay

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


     } 
    } 
} 

nhưng các cầu thủ đôi khi là khó khăn và không phát âm thanh nhưng sau đó trạng thái cũng là AVPlayerStatusReadyToPlay. Nó không bao giờ đi vào bên trong AVPlayerStatusFailed hoặc AVPlayerItemStatusUnknown. Khi tôi muốn xử lý lỗi của AVPlayer, nó cũng phải đi vào bên trong. Hãy giúp tôi!!

Trả lời

31

Bạn nên quan sát trạng thái của CurrentItem. AVPlayer không thành công vì AVPlayerItem không thành công, nếu có điều gì sai, nó bắt đầu từ AVPlayerItem rồi AVPlayer.

thử:

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

trong observeValueForKeyPath của bạn:

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

Bạn có thể có một cái nhìn của xử lý AVPlayer hoặc sử dụng nó trực tiếp từ HysteriaPlayer, dự án mã nguồn mở của tôi.

+0

Siêu cảm ơn :) Bạn là vị cứu tinh :) – Srikanth

+0

CẢM ƠN BẠN !!! Mã này đã giúp tôi! –

+0

** Chính xác ** những gì tôi đang tìm kiếm, cảm ơn! – zpasternack

Các vấn đề liên quan