iOS MPMoviePlayerController播放视频及添加监听事件

转载 2016年10月10日 15:22:03

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

本文转自,查看原文请戳这里


#import "MainViewController.h"#import@interface MainViewController ()

//视频播放器

@property (strong, nonatomic) MPMoviePlayerController *player;

@property (strong, nonatomic) UIImageView *imageView;

@end

@implementation MainViewController

- (void)viewDidLoad

{

[super viewDidLoad];

//实例化视频播放器

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

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

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

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

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

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

//1设置播放器的大小

[self.player.view setFrame:CGRectMake(0, 0, 320, 180)]; //16:9是主流媒体的样式

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

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

//4播放

[self.player play];

//[self.player stop];

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

//1 监听播放状态

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

//2 监听播放完成

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

//3视频截图

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

//3视频截图

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

//4退出全屏通知

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

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

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

UIImageView *thumbnailImageView = [[UIImageView alloc]initWithFrame:CGRectMake(80, 200, 160, 90)];

self.imageView = thumbnailImageView;

[self.view addSubview:thumbnailImageView];

}

#pragma mark 退出全屏

- (void)exitFullScreen

{

NSLog(@"退出全屏");

}

#pragma mark -播放器事件监听

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

- (void)caputerImage:(NSNotification *)notification

{

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

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

[self.imageView setImage:image];

}

#pragma mark 播放器事件监听

#pragma mark 播放完成

- (void)finishedPlay

{

NSLog(@"播放完成");

}

#pragma mark 播放器视频的监听

#pragma mark 播放状态变化

/*

MPMoviePlaybackStateStopped,  //停止

MPMoviePlaybackStatePlaying,  //播放

MPMoviePlaybackStatePaused,  //暂停

MPMoviePlaybackStateInterrupted,  //中断

MPMoviePlaybackStateSeekingForward, //快进

MPMoviePlaybackStateSeekingBackward  //快退

*/

- (void)stateChange

{

switch (self.player.playbackState) {

case MPMoviePlaybackStatePaused:

NSLog(@"暂停");

break;

case MPMoviePlaybackStatePlaying:

//设置全屏播放

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

NSLog(@"播放");

break;

case MPMoviePlaybackStateStopped:

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

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

NSLog(@"停止");

break;

default:

break;

}

}

@end



文/i丶子木(简书作者)
原文链接:http://www.jianshu.com/p/c3cb54d8f675
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

自定义MPMoviePlayerController的界面

最近由于项目原因需要自定义MPMoviePlayerController,直接在player的的view上面加载其他控件的话,控件是能加上去,但是不能随着player自带的控制试图消失而消失,最后逼不...
  • smking
  • smking
  • 2012年12月25日 18:04
  • 12582

监听UIWebView点击视频播放的事件

最近项目需要统计在跳转UIWebView后,用户点击网页上的视频进行播放的概率。找了很多监听进入视频播放的方法,最后在stackoverflow找到下面这个使用Notification的可行方法: #...
  • dolacmeng
  • dolacmeng
  • 2016年02月02日 10:56
  • 2433

MPMoviePlayerViewController播放本地视频一直Loading问题

大致代码如下: NSString *path = [[NSBundle mainBundle]pathForResource:@"7491.mp4" ofType:nil]; NSURL...
  • sinat_25544827
  • sinat_25544827
  • 2015年06月19日 15:40
  • 489

iOS开发系列- 视频MPMoviePlayerController

视频 MPMoviePlayerController 在iOS中播放视频可以使用MediaPlayer.framework种的MPMoviePlayerController类来完成,它支持...
  • cwllj
  • cwllj
  • 2016年03月21日 17:56
  • 992

拦截MPMoviePlayerController的点击事件

为了解决在MPMovieController上添加一个和控制栏一起显示的按钮,特别研究了一下MPMoviePlayerController的结构 (controlStyle是default,为了便于查...
  • HorkyChen
  • HorkyChen
  • 2012年09月20日 23:27
  • 9747

IOS使用AVAudioPlayer播放mp3歌曲文件并监听来电打断

本实例实现了AVAudioPlayer播放mp3歌曲文件,实现了播放、暂停、继续操作,音乐音量控制、播放进度显示,同时监听来电打断事件 一、控件初始化 - (void)viewDi...
  • qq_33777090
  • qq_33777090
  • 2016年10月10日 15:23
  • 1281

IOS视频播放器的使用(MPMoviePlayerController)

这里介绍一下视频播放器MPMoviePlayerController的使用,之前没有放出视频来,经过调试终于能播放了。 show一下播放效果, #pragma mark -...
  • COOL_BEAR_XX
  • COOL_BEAR_XX
  • 2015年04月03日 20:10
  • 752

[IOS]对视频、音频播放器添加缓冲进度条

[IOS]对视频、音频播放器添加缓冲进度条
  • qq_33777090
  • qq_33777090
  • 2016年05月31日 11:11
  • 2522

得到UIWebView内视频播放器弹出和关闭的通知

转载自: http://iloss.me/post/kai-fa/2014-09-18-uiwebview-video-fullscreen 场景是这样的 在UIWebview里面有一...
  • chenyong05314
  • chenyong05314
  • 2014年12月24日 10:44
  • 6555

iOS MPMoviePlayerController播放视频及添加监听事件

iOS提供了叫做MPMoviePlayerController  MPMoviePlayerViewController两个类,可以轻松用来实现视频播放。MPMoviePlayerViewContro...
  • qq_33777090
  • qq_33777090
  • 2016年10月10日 15:22
  • 1215
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS MPMoviePlayerController播放视频及添加监听事件
举报原因:
原因补充:

(最多只允许输入30个字)