详细介绍下ios用MPMoviePlayerController来播放视频

        最近接触到ios播放视频这方面,顺便学习了一下MPMoviePlayerController这个属性,在ios3.2以后就很少作为单独的类来进行视频播放了,ios3.2以上版本,它是作为MPMoviePlayerViewController内部的一个属性来使用,在网上找了不少资料和博客来参考,感觉这些材料都是比较旧的,也不是很详细,因为最近还算有空,就整理了一下最近项目时在控制器里用到MPMoviePlayerController属性的一些心得:(是我自己整理的一些笔记,因为涉及还不是很深,大家适当参考)

        

视频播放:

    视频播放有几个类可以实现,其中最适合用来播放视频的就是MPMoviePlayerController(在xcode5.0以上版本后需要将其创建的变量设置为全局才能正常播放),要调用该类要#import<MediaPlayer/MediaPlayer.h>的头文件,每次通过MPMoviePlayerController创建的视频变量使用完之后都要进行销毁(非arcMPMoviePlayerController里面包含了很多通知方法用来监听视频对象,例如:(整理我觉得比较常用的几个,前面两个我觉得最重要)

MPMoviePlayerPlaybackDidFinishNotification

 当电影播放完毕或者用户按下了Done按钮后发出。

MPMoviePlayerNowPlayingMovieDidChangeNotification

当电影开始播放时调用的通知方法,当你需要视频开始播放时实现什么功能你可以使用。


 MPMoviePlayerContentPreloadDidFinishNotification

 当电影播放器结束对内容的预加载后发出。因为内容可以在仅加载了一部分的情况下播放,所以这个通知可能在已经播放后才发出。

 MPMoviePlayerScallingModeDidChangedNotification

 当用户改变了电影的缩放模式后发出。用户可以点触缩放图标,在全屏播放和窗口播放之间切换。

 

使用MPMoviePlayerController实现视频的播放具体步骤

总体的方法实现:

#pragma mark -播放视频-

- (void)playVideo:(NSString *)filePath

{

    // 1.获得视频播放的URL

    NSURL *videoUrl = [NSURL fileURLWithPath:filePath];

    NSLog(@"%@",videoUrl);

    // 2.更加url创建视频变量

    _video = [[MPMoviePlayerController allocinitWithContentURL:videoUrl];

    _video.controlStyle =MPMovieControlStyleFullscreen;

// 设置视频frame

    _video.view.frame =self.bgImgView.frame; 

    [self.viewaddSubview:_video.view];

    // 3.注册一个播放结束的通知

    [[NSNotificationCenter defaultCenteraddObserver:self

                                            selector:@selector(myMovieFinishedCallback:)

                                                name:MPMoviePlayerPlaybackDidFinishNotification

                                              object:_video]; 

    // 4.注册一个正在播放的通知

    [[NSNotificationCenter defaultCenteraddObserver:self selector:@selector(isPlayingMovie:) name:MPMoviePlayerNowPlayingMovieDidChangeNotification object:_video];

    // 5.开启播放视频

    [_video play];

}


1.先定义一个类型的全局变量_movie(我觉得这步很重要)

@interface TKVideo2ViewController ()

{

    MPMoviePlayerController *_video;

}

@end

 

2.通过url播放视频方法:

// 1.获得视频播放的URL

    NSURL *videoUrl = [NSURL fileURLWithPath:filePath];


    // 2.根据url创建视频变量

    _video = [[MPMoviePlayerController allocinitWithContentURL:videoUrl];

    

    _video.controlStyle =MPMovieControlStyleFullscreen;

    _video.view.frame =self.bgImgView.frame;

    

    [self.viewaddSubview:_video.view];

    

    // 3.开启播放视频

    [_video play];


3.注册一个播放结束的监听者:

// 3.注册一个播放结束的通知

    [[NSNotificationCenter defaultCenteraddObserver:self

                                             selector:@selector(myMovieFinishedCallback:)

                                                 name:MPMoviePlayerPlaybackDidFinishNotification

                                               object:_video];


3.1.对应实现的方法:

#pragma mark -当视频播放完毕释放对象-


- (void)myMovieFinishedCallback:(NSNotification*)notify

{

    // 1.视频播放对象

    MPMoviePlayerController* theVideo = [notifyobject];

    // 2.销毁播放通知

    [[NSNotificationCenter defaultCenterremoveObserver:self

                                                    name:MPMoviePlayerPlaybackDidFinishNotification

                                                  object:theVideo];

    // 播放结束移除视频对象(非arc记得release!!

    [theVideo.view removeFromSuperview];

   // 这个代理方法就是我自己在视频播放结束后执行的方法

    [self.delegateendingPlayMovie];

}


4注册一个开始播放的监听者

    // 4.注册一个正在播放的通知

    [[NSNotificationCenter defaultCenteraddObserver:self selector:@selector(isPlayingMovie:) name:MPMoviePlayerNowPlayingMovieDidChangeNotification object:_video];

4.1.实现对应的方法:

#pragma mark -正在播放视频时调用方法-

- (void)isPlayingMovie:(NSNotification *)notify

{

    MPMoviePlayerController *theVideo = [notifyobject];

    

    [[NSNotificationCenter defaultCenterremoveObserver:self name:MPMoviePlayerNowPlayingMovieDidChangeNotification object:theVideo];

    // 这个代理方法就是我自己在视频开始播放时执行的方法

    [self.delegateplayingMovie:theVideo];

}


还想给大家介绍的一个就是视频的controlStyle属性,他是一个枚举类型,它使视频的播放类型,我简单介绍这4个类型:(这是xcode头文件的描述,我自己也试了一下)

 MPMovieControlStyleNone,       // 没有任何控制操作

    MPMovieControlStyleEmbedded,   // 默认普通播放,但是有暂停和全屏的控制按钮

    MPMovieControlStyleFullscreen, // 默认全屏播放,有一个结束播放的done按钮,还有暂停按钮、下一个视频和上一个视频的切换按钮

    

    MPMovieControlStyleDefault = MPMovieControlStyleEmbedded // 默认的播放控制模式就是跟上面的embedded一样的意思


好了,我就给大家介绍到这里了,我把我觉得挺重要的两个通知实现了,

其他通知方法都是类似的,自己可以一个个的去验证,下次有空的时候,我会写一下直接使用MPMoviePlayerViewController来播放视频的心得体会,再会


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值