MPMoviePlayerController播放视频

MPMoviePlayerController播放视频步骤:

  1. 准备好视频路径,创建MPMoviePlayerController,即使是本地视频文件,也要生成NSURL路径。
NSString *file = [[NSBundle mainBundle] pathForResource:@"test_movie" ofType:@"mp4"];  
NSURL *url = [NSURL fileURLWithPath:file];  
if (_moviePlayer == nil) {  
   _moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];  
}else {  
   [_moviePlayer setContentURL:url];  
}  
  1. MPMoviePlayerController各种设置,拉伸、控制模式、循环模式、自动播放等等,自己看着API文档挨个儿试吧,总有一款适合你,最后一步就是别忘了播放呗。
_moviePlayer.controlStyle = MPMovieControlStyleNone;    
_moviePlayer.shouldAutoplay = YES;    
_moviePlayer.repeatMode = MPMovieRepeatModeOne;  
[_moviePlayer setFullscreen:YES animated:YES];    
_moviePlayer.scalingMode = MPMovieScalingModeAspectFit;  
       [_moviePlayer play];
  1. 在适当的位置开始/停止监听播放状态事件。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:)    
                                             name:MPMoviePlayerPlaybackDidFinishNotification    
                                           object:_moviePlayer];   

监听视频播放完成的事件,播放完成将执行moviePlayBackDidFinish方法,在该方法中执行自己想要的操作。
因为我之前设置了循环播放、而且控制模式也是不可控制,因此播放器上是不会有“完成”按钮的。也就不会正常的通过完成播放来进入这个方法。

类似的,还可以监听MPMoviePlayerPlaybackStateDidChangeNotification等很多关于播放期间状态改变的事件,可以根据自己的需要去选择。

别忘了不需要时,记得removeObserver。

改进应用

代码改成:

  1. new一个MPMoviePlayerViewController对象,将其view添加到我们自己的viewcontroller里面;

  2. 不需要自己创建MPMoviePlayerController,使用MPMoviePlayerViewController里面的MPMoviePlayerController执行实际的播放操作;

  3. 监听的对象改成2中所述的MPMoviePlayerController就行了。

 // create MPMoviePlayerViewController  
   MPMoviePlayerViewController *playerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:url];    
   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:)    
                                                name:MPMoviePlayerPlaybackDidFinishNotification    
                                              object:[playerViewController moviePlayer]];    
   // add to view  
   [self.view addSubview:playerViewController.view];   
  
   // play movie   
   MPMoviePlayerController *player = [playerViewController moviePlayer];    
player.controlStyle = MPMovieControlStyleNone;    
player.shouldAutoplay = YES;    
player.repeatMode = MPMovieRepeatModeOne;  
[player setFullscreen:YES animated:YES];    
player.scalingMode = MPMovieScalingModeAspectFit;  
   [player play];   

这样就ok了。

当然,自己在viewController里面对手势操作进行捕捉和处理肯定也是没问题的,不过我对这块儿还不是太熟悉,呵呵,当时就走了个捷径。

手势操作是iOS的特色,也是改进产品用户体验的大趋势,以后我也得好好学学这一块的技术!!!

你可能感兴趣的:(MPMoviePlayerController播放视频)