ios学习--MPMoviePlayerViewController和MPMoviePlayerController

转载 2016年06月01日 15:29:27

ios播放视频文件一般使用 MPMoviePlayerViewController 和 MPMoviePlayerController。这两者的区别就是MPMoviePlayerViewController里面包含了一个MPMoviePlayerController

先说MPMoviePlayerController


属性 说明
@property (nonatomic, copy) NSURL *contentURL 播放媒体URL,这个URL可以是本地路径,也可以是网络路径
@property (nonatomic, readonly) UIView *view 播放器视图,如果要显示视频必须将此视图添加到控制器视图中
@property (nonatomic, readonly) UIView *backgroundView 播放器背景视图
@property (nonatomic, readonly) MPMoviePlaybackState playbackState 媒体播放状态,枚举类型:
MPMoviePlaybackStateStopped:停止播放
MPMoviePlaybackStatePlaying:正在播放
MPMoviePlaybackStatePaused:暂停
MPMoviePlaybackStateInterrupted:中断
MPMoviePlaybackStateSeekingForward:向前定位
MPMoviePlaybackStateSeekingBackward:向后定位
@property (nonatomic, readonly) MPMovieLoadState loadState 网络媒体加载状态,枚举类型:
MPMovieLoadStateUnknown:位置类型
MPMovieLoadStatePlayable:
MPMovieLoadStatePlaythroughOK:这种状态如果shouldAutoPlay为YES将自动播放
MPMovieLoadStateStalled:停滞状态
@property (nonatomic) MPMovieControlStyle controlStyle 控制面板风格,枚举类型:
MPMovieControlStyleNone:无控制面板
MPMovieControlStyleEmbedded:嵌入视频风格
MPMovieControlStyleFullscreen:全屏
MPMovieControlStyleDefault:默认风格
@property (nonatomic) MPMovieRepeatMode repeatMode; 重复播放模式,枚举类型:
MPMovieRepeatModeNone:不重复,默认值
MPMovieRepeatModeOne:重复播放
@property (nonatomic) BOOL shouldAutoplay 当网络媒体缓存到一定数据时是否自动播放,默认为YES
@property (nonatomic, getter=isFullscreen) BOOL fullscreen 是否全屏展示,默认为NO,注意如果要通过此属性设置全屏必须在视图显示完成后设置,否则无效
@property (nonatomic) MPMovieScalingMode scalingMode 视频缩放填充模式,枚举类型:
MPMovieScalingModeNone:不进行任何缩放
MPMovieScalingModeAspectFit:固定缩放比例并且尽量全部展示视频,不会裁切视频
MPMovieScalingModeAspectFill:固定缩放比例并填充满整个视图展示,可能会裁切视频
MPMovieScalingModeFill:不固定缩放比例压缩填充整个视图,视频不会被裁切但是比例失衡
@property (nonatomic, readonly) BOOL readyForDisplay 是否有相关媒体被播放
@property (nonatomic, readonly) MPMovieMediaTypeMask movieMediaTypes 媒体类别,枚举类型:
MPMovieMediaTypeMaskNone:未知类型
MPMovieMediaTypeMaskVideo:视频
MPMovieMediaTypeMaskAudio:音频
@property (nonatomic) MPMovieSourceType movieSourceType 媒体源,枚举类型:
MPMovieSourceTypeUnknown:未知来源
MPMovieSourceTypeFile:本地文件
MPMovieSourceTypeStreaming:流媒体(直播或点播)
@property (nonatomic, readonly) NSTimeInterval duration 媒体时长,如果未知则返回0
@property (nonatomic, readonly) NSTimeInterval playableDuration 媒体可播放时长,主要用于表示网络媒体已下载视频时长
@property (nonatomic, readonly) CGSize naturalSize 视频实际尺寸,如果未知则返回CGSizeZero
@property (nonatomic) NSTimeInterval initialPlaybackTime 起始播放时间
@property (nonatomic) NSTimeInterval endPlaybackTime 终止播放时间
@property (nonatomic) BOOL allowsAirPlay 是否允许无线播放,默认为YES
@property (nonatomic, readonly, getter=isAirPlayVideoActive) BOOL airPlayVideoActive 当前媒体是否正在通过AirPlay播放
@property(nonatomic, readonly) BOOL isPreparedToPlay 是否准备好播放
@property(nonatomic) NSTimeInterval currentPlaybackTime 当前播放时间,单位:秒
@property(nonatomic) float currentPlaybackRate 当前播放速度,如果暂停则为0,正常速度为1.0,非0数据表示倍率
对象方法 说明
- (instancetype)initWithContentURL:(NSURL *)url 使用指定的URL初始化媒体播放控制器对象
- (void)setFullscreen:(BOOL)fullscreen animated:(BOOL)animated 设置视频全屏,注意如果要通过此方法设置全屏则必须在其视图显示之后设置,否则无效
- (void)requestThumbnailImagesAtTimes:(NSArray *)playbackTimes timeOption:(MPMovieTimeOption)option 获取在指定播放时间的视频缩略图,第一个参数是获取缩略图的时间点数组;第二个参数代表时间点精度,枚举类型:
MPMovieTimeOptionNearestKeyFrame:时间点附近
MPMovieTimeOptionExact:准确时间
- (void)cancelAllThumbnailImageRequests 取消所有缩略图获取请求
- (void)prepareToPlay 准备播放,加载视频数据到缓存,当调用play方法时如果没有准备好会自动调用此方法
- (void)play 开始播放
- (void)pause 暂停播放
- (void)stop 停止播放
- (void)beginSeekingForward 向前定位
- (void)beginSeekingBackward 向后定位
- (void)endSeeking 停止快进/快退
通知 说明
MPMoviePlayerScalingModeDidChangeNotification 视频缩放填充模式发生改变
MPMoviePlayerPlaybackDidFinishNotification 媒体播放完成或用户手动退出,具体完成原因可以通过通知userInfo中的key为MPMoviePlayerPlaybackDidFinishReasonUserInfoKey的对象获取
MPMoviePlayerPlaybackStateDidChangeNotification 播放状态改变,可配合playbakcState属性获取具体状态
MPMoviePlayerLoadStateDidChangeNotification 媒体网络加载状态改变
MPMoviePlayerNowPlayingMovieDidChangeNotification 当前播放的媒体内容发生改变
MPMoviePlayerWillEnterFullscreenNotification 将要进入全屏
MPMoviePlayerDidEnterFullscreenNotification 进入全屏后
MPMoviePlayerWillExitFullscreenNotification 将要退出全屏
MPMoviePlayerDidExitFullscreenNotification 退出全屏后
MPMoviePlayerIsAirPlayVideoActiveDidChangeNotification 当媒体开始通过AirPlay播放或者结束AirPlay播放
MPMoviePlayerReadyForDisplayDidChangeNotification 视频显示状态改变
MPMovieMediaTypesAvailableNotification 确定了媒体可用类型后
MPMovieSourceTypeAvailableNotification 确定了媒体来源后
MPMovieDurationAvailableNotification 确定了媒体播放时长后
MPMovieNaturalSizeAvailableNotification 确定了媒体的实际尺寸后
MPMoviePlayerThumbnailImageRequestDidFinishNotification 缩略图请求完成之后
MPMediaPlaybackIsPreparedToPlayDidChangeNotification 做好播放准备后


首先要包含 #import <MediaPlayer/MediaPlayer.h>头文件和MediaPlayer.framework。

 - (void)createMPPlayerController:(NSString *)sFileNamePath {

  NSURL *movieURL = [NSURL fileURLWithPath:sFileNamePath];

 MPMoviePlayerController *movewController =[[MPMoviePlayerController alloc] initWithContentURL:movieURL];

 [movewController prepareToPlay];

 [self.view addSubview:movewController.view];//设置写在添加之后   // 这里是addSubView

 movewController.shouldAutoplay=YES;

 [movewController setControlStyle:MPMovieControlStyleDefault];

 [movewController setFullscreen:YES];

 [movewController.view setFrame:self.view.bounds];

 这里注册相关操作的通知

 [[NSNotificationCenter defaultCenteraddObserver:self

                                             selector:@selector(movieFinishedCallback:)

                                                 name:MPMoviePlayerPlaybackDidFinishNotification

                                               object:moveViewController.movewController]; //播放完后的通知


 [movewController release];

}

-(void)movieFinishedCallback:(NSNotification*)notify {

    MPMoviePlayerController* theMovie = [notifyobject];

    [[NSNotificationCenterdefaultCenterremoveObserver:self

                                                    name:MPMoviePlayerPlaybackDidFinishNotification

                                                  object:theMovie];

    [theMovie.view removeFromSuperview];

    [theMovie release];

}

//////////////////////////////// end

2.介绍下MPMoviePlayerViewController。 

注意:MPMoviePlayerViewController 必须 presentMoviePlayerViewControllerAnimated方式添加,否则Done按钮是不会响应通知MPMoviePlayerPlaybackDidFinishNotification事件的;

- (void)createMPPlayerController:(NSString *)sFileNamePath {

    MPMoviePlayerViewController *moviePlayer =[[MPMoviePlayerViewControllerallocinitWithContentURL:[NSURLfileURLWithPath:sFileNamePath]];

    [moviePlayer.moviePlayerprepareToPlay];

    [selfpresentMoviePlayerViewControllerAnimated:moviePlayer]; // 这里是presentMoviePlayerViewControllerAnimated

    [moviePlayer.moviePlayersetControlStyle:MPMovieControlStyleFullscreen];

    [moviePlayer.view setBackgroundColor:[UIColor clearColor]];

    [moviePlayer.view setFrame:self.view.bounds];

    [[NSNotificationCenterdefaultCenteraddObserver:self

                                             selector:@selector(movieFinishedCallback:)

                                                 name:MPMoviePlayerPlaybackDidFinishNotification

                                               object:moviePlayer.moviePlayer];

    [moviePlayer release];

}

-(void)movieStateChangeCallback:(NSNotification*)notify  {

   //点击播放器中的播放/ 暂停按钮响应的通知

}

-(void)movieFinishedCallback:(NSNotification*)notify{

   // 视频播放完或者在presentMoviePlayerViewControllerAnimated下的Done按钮被点击响应的通知。

    MPMoviePlayerController* theMovie = [notifyobject];

    [[NSNotificationCenterdefaultCenterremoveObserver:self

                                                    name:MPMoviePlayerPlaybackDidFinishNotification

                                                  object:theMovie];

    [selfdismissMoviePlayerViewControllerAnimated];

}


以下是资料

 moviePlayer.moviewControlMode = MPMovieControlModeDefault;

 MPMovieControlModeDefault            显示播放/暂停、音量和时间控制

 MPMovieControlModeVolumeOnly         只显示音量控制

 MPMovieControlModeHidden             没有控制器

 

 moviePlayer.scallingMode = MPMovieScallingModeAspectFit;

 你可以使用下列宽高比值:

 MPMovieScallingModeNone            不做任何缩放

 MPMovieScallingModeAspectFit       适应屏幕大小,保持宽高比

 MPMovieScallingModeAspectFill      适应屏幕大小,保持宽高比,可裁剪

 MPMovieScallingModeFill            充满屏幕,不保持宽高比

 

 你会观察到以下通知:

 MPMoviePlayerContentPreloadDidFinishNotification

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

 MPMoviePlayerScallingModeDidChangedNotification

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

 MPMoviePlayerPlaybackDidFinishNotification

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


原文入口:http://blog.csdn.net/nogodoss/article/details/14161195

iOS 视频播放 MPMoviePlayerViewController

#import  MediaPlayer.framework。 MPMoviePlayerViewController: 打开网络视频: -(void)op...
  • xueer8835
  • xueer8835
  • 2014年03月27日 15:11
  • 10553

使用MPMoviePlayerController播放视频

MPMoviePlayerController播放视频 基本的视频播放,应该都是用MPMoviePlayerController吧,SDK文档里给出的例子也是这样的。 一般的步骤: 1. 准...
  • linzhu0831
  • linzhu0831
  • 2012年01月31日 12:30
  • 42119

MPMoviePlayerViewController和MPMoviePlayerController的使用

ios播放视频文件一般使用 MPMoviePlayerViewController 和 MPMoviePlayerController。前者是一个view,后者是个Controller。区别就是MPM...
  • nogodoss
  • nogodoss
  • 2013年11月05日 09:52
  • 31059

iOS之AVPlayer、MPMoviePlayerController、MPMoviePlayerViewController、AVPlayerViewController播放音乐和视频

AVPlayer播放音乐#import /** 播放器 */ @property (nonatomic, strong) AVPlayer *player; #pragma mark - 懒加载代码...
  • wzc10101415
  • wzc10101415
  • 2017年02月16日 18:59
  • 488

iOS开发 MPMoviePlayerController和MPMoviePlayerViewController(视频播放)的使用

一.介绍 1.iOS9之前,iOS播放视频文件一般使用MPMoviePlayerViewController和 MPMoviePlayerController 2.MPMoviePlayerVie...
  • wgl_happy
  • wgl_happy
  • 2017年08月10日 17:07
  • 275

iOS 多媒体编程(二)——视频(AVPlayer)

和音频播放一样,ios也提供个很多的API。如mediaPlayer.framework下的MPMediaPlayerController、AVFounditon.framework下的AVPlaye...
  • chy555chy
  • chy555chy
  • 2016年06月27日 18:03
  • 2381

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

iOS提供了叫做MPMoviePlayerController  MPMoviePlayerViewController两个类,可以轻松用来实现视频播放。MPMoviePlayerViewContro...
  • qq_33777090
  • qq_33777090
  • 2016年10月10日 15:22
  • 1165

自定义MPMoviePlayerController(手势控制提高音量和进度)

使用系统自定义的 MPMoviePlayerController。实现手势向上下滑动提高(降低)音量,手势向左右滑动控制快进和快退 #import @interface KKBMoviePlay...
  • u013561113
  • u013561113
  • 2014年03月18日 14:29
  • 4649

ios中MPMoviePlayerViewController和MPMoviePlayerController的区别

ios播放视频文件一般使用 MPMoviePlayerViewController 和 MPMoviePlayerController。前者是一个view,后者是个Controller。区别就是MPM...
  • Eduora_meimei
  • Eduora_meimei
  • 2014年05月10日 19:33
  • 1221

MPMoviePlayerViewController或MPMoviePlayerController播放本地视频报错:_itemFailedToPlayToEnd: {kind = 1;new =

MPMoviePlayerViewController或MPMoviePlayerController播放本地视频报错: _itemFailedToPlayToEnd: {     kind = 1...
  • zuihoudeliulang
  • zuihoudeliulang
  • 2015年03月17日 20:10
  • 1029
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios学习--MPMoviePlayerViewController和MPMoviePlayerController
举报原因:
原因补充:

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