码迷,mamicode.com
首页 > 移动开发 > 详细

IOS视频播放

时间:2015-07-13 18:58:02      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:

IOS提供了叫做MPMoviePlayerController  MPMoviePlayerViewController两个类,可以轻松用来实现视频播放。MPMoviePlayerViewController只能全屏播放视频。

[objc] view plaincopy技术分享技术分享

  1. #import "MainViewController.h"  

  2. #import <MediaPlayer/MediaPlayer.h>  

  3.   

  4. @interface  MainViewController ()  

  5. //视频播放器  

  6. @property (strongnonatomicMPMoviePlayerController *player;  

  7. @property (strongnonatomicUIImageView *imageView;  

  8. @end   

  9.   

  10. @implementation MainViewController  

  11.   

  12. - (void)viewDidLoad  

  13. {  

  14.     [super viewDidLoad];  

  15.     //实例化视频播放器  

  16.     NSURL *url = [[NSBundle mainBundle]URLForResource:@"promo_full" withExtension:@"mp4"];  

  17.       

  18.     //视频播放是流媒体的播放模式,所谓流媒体就是把视频数据像流水一样,变加载,变播放。  

  19. //    //提示:如果url中包含中文,需要添加百分号。  

  20. //    NSString *urlString = @"http:www.xxx.com/video/xxx.mp4";  

  21. //    NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];  

  22.       

  23.     self.player = [[MPMoviePlayerController alloc]initWithContentURL:url];  

  24.     //1设置播放器的大小  

  25.     [self.player.view setFrame:CGRectMake(00320180)]; //16:9是主流媒体的样式  

  26.     //2将播放器视图添加到根视图  

  27.     [self.view addSubview:self.player.view];  

  28.       

  29.     //4播放  

  30.     [self.player play];  

  31.     //[self.player stop];  

  32.     //通过通知中心,以观察者模式监听视频播放状态  

  33.     //1 监听播放状态  

  34.     [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(stateChange) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil];  

  35.     //2 监听播放完成  

  36.     [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(finishedPlay) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];  

  37.     //3视频截图  

  38.     [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(caputerImage:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:nil];  

  39.     //3视频截图  

  40.     [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(caputerImage:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:nil];  

  41.       

  42.     //4退出全屏通知  

  43.     [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(exitFullScreen) name:MPMoviePlayerDidExitFullscreenNotification object:nil];  

  44.       

  45.     //异步视频截图,可以在attimes指定一个或者多个时间。  

  46.     [self.player requestThumbnailImagesAtTimes:@[@10.0f@20.0f] timeOption:MPMovieTimeOptionNearestKeyFrame];  

  47.       

  48.     UIImageView *thumbnailImageView = [[UIImageView alloc]initWithFrame:CGRectMake(8020016090)];  

  49.     self.imageView = thumbnailImageView;  

  50.     [self.view addSubview:thumbnailImageView];  

  51. }  

  52.   

  53. #pragma mark 退出全屏  

  54. - (void)exitFullScreen  

  55. {  

  56.     NSLog(@"退出全屏");  

  57. }  

  58.   

  59. #pragma mark -播放器事件监听  

  60. #pragma mark 视频截图 这个方法是异步方法  

  61. - (void)caputerImage:(NSNotification *)notification  

  62. {  

  63.     NSLog(@"截图 %@", notification);  

  64.     UIImage *image = notification.userInfo[@"MPMoviePlayerThumbnailImageKey"];  

  65.     [self.imageView setImage:image];  

  66. }  

  67.   

  68. #pragma mark 播放器事件监听  

  69. #pragma mark 播放完成  

  70. - (void)finishedPlay  

  71. {  

  72.     NSLog(@"播放完成");  

  73. }  

  74.   

  75. #pragma mark 播放器视频的监听  

  76. #pragma mark 播放状态变化  

  77. /* 

  78.  MPMoviePlaybackStateStopped,  //停止 

  79.  MPMoviePlaybackStatePlaying,  //播放 

  80.  MPMoviePlaybackStatePaused,   //暂停 

  81.  MPMoviePlaybackStateInterrupted,  //中断 

  82.  MPMoviePlaybackStateSeekingForward, //快进 

  83.  MPMoviePlaybackStateSeekingBackward  //快退 

  84.  */  

  85. - (void)stateChange  

  86. {  

  87.     switch (self.player.playbackState) {  

  88.         case MPMoviePlaybackStatePaused:  

  89.             NSLog(@"暂停");  

  90.             break;  

  91.         case MPMoviePlaybackStatePlaying:  

  92.             //设置全屏播放  

  93.             [self.player setFullscreen:YES animated:YES];  

  94.             NSLog(@"播放");  

  95.             break;  

  96.         case MPMoviePlaybackStateStopped:  

  97.             //注意:正常播放完成,是不会触发MPMoviePlaybackStateStopped事件的。  

  98.             //调用[self.player stop];方法可以触发此事件。  

  99.             NSLog(@"停止");  

  100.             break;  

  101.         default:  

  102.             break;  

  103.     }  

  104. }  

  105.   

  106. @end  


IOS视频播放

标签:

原文地址:http://my.oschina.net/SoulJa/blog/478032

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!