如何获取回放状态更改MPMoviePlayerController的通知

时间:2010-09-29 06:04:31

标签: ios4 mpmovieplayercontroller

我正在编写一个通过http播放流​​媒体的iPhone应用,这是我的代码


- (void)viewDidLoad {
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self 
            selector:@selector(moviePlayerPlaybackStateDidChange:) 
             name:MPMoviePlayerPlaybackStateDidChangeNotification 
              object:nil];

    //livePlayer is MPMoviePlayerController declared in header
    livePlayer =  [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString: liveStreamURL]];
     livePlayer.controlStyle = MPMovieControlStyleNone; 
    [livePlayer prepareToPlay];
    [[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(moviePlayerLoadStateChanged:) 
              name:MPMoviePlayerLoadStateDidChangeNotification 
               object:nil];
}

    - (void) moviePlayerLoadStateChanged:(NSNotification*)notification {
     if ([livePlayer loadState] != MPMovieLoadStateUnknown) {
             [[NSNotificationCenter  defaultCenter] removeObserver:self 
               name:MPMoviePlayerLoadStateDidChangeNotification 
                object:nil];
             [livePlayer play];
         }

    }

    -(void) moviePlayerPlaybackStateDidChange:(NSNotification*)notification {

 NSLog(@"playbackDidChanged");
 MPMoviePlayerController *moviePlayer = notification.object;
    MPMoviePlaybackState playbackState = moviePlayer.playbackState;
 if(playbackState == MPMoviePlaybackStateStopped) {
  NSLog(@"MPMoviePlaybackStateStopped");
 } else if(playbackState == MPMoviePlaybackStatePlaying) {
  NSLog(@"MPMoviePlaybackStatePlaying");
 } else if(playbackState == MPMoviePlaybackStatePaused) {
  NSLog(@"MPMoviePlaybackStatePaused");
 } else if(playbackState == MPMoviePlaybackStateInterrupted) {
  NSLog(@"MPMoviePlaybackStateInterrupted");
 } else if(playbackState == MPMoviePlaybackStateSeekingForward) {
  NSLog(@"MPMoviePlaybackStateSeekingForward");
 } else if(playbackState == MPMoviePlaybackStateSeekingBackward) {
  NSLog(@"MPMoviePlaybackStateSeekingBackward");
 }
}

方法moviePlayerPlaybackStateDidChange仅在开始播放流时调用一次。因为网络状态不好,有时候它停止播放并显示黑屏,我想在缓冲流时显示UIActivityIndi​​cateView,任何人都可以告诉我该怎么做? 我使用的是SDK4.0

0 个答案:

没有答案