属性 说明 @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 做好播放准备后 注意MPMediaPlayerController的状态等信息并不是通过代理来和外界交互的,而是通过通知中心,因此从上面的列表中可以看到常用的一些通知。由于MPMoviePlayerController本身对于媒体播放做了深度的封装,使用起来就相当简单:创建MPMoviePlayerController对象,设置frame属性,将MPMoviePlayerController的view添加到控制器视图中。 MPMoviePlayerViewController 其实MPMoviePlayerController如果不作为嵌入视频来播放(例如在新闻中嵌入一个视频),通常在播放时都是占满一个屏幕的,特别是在iPhone、iTouch上。因此从iOS3.2以后苹果也在思考既然MPMoviePlayerController在使用时通常都是将其视图view添加到另外一个视图控制器中作为子视图,那么何不直接创建一个控制器视图内部创建一个MPMoviePlayerController属性并且默认全屏播放,开发者在开发的时候直接使用这个视图控制器。这个内部有一个MPMoviePlayerController的视图控制器就是MPMoviePlayerViewController,它继承于UIViewController。MPMoviePlayerViewController内部多了一个moviePlayer属性和一个带有url的初始化方法,同时它内部实现了一些作为模态视图展示所特有的功能,例如默认是全屏模式展示、弹出后自动播放、作为模态窗口展示时如果点击“Done”按钮会自动退出模态窗口等。 |
在iOS中播放视频可以使用MediaPlayer.framework种的MPMoviePlayerController类来完成,它支持本地视频和网络视频播放。这个类实现了MPMediaPlayback协议,因此具备一般的播放器控制功能,例如播放、暂停、停止等。但是MPMediaPlayerController自身并不是一个完整的视图控制器,如果要在UI中展示视频需要将view属性添加到界面中。下面列出了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 做好播放准备后 注意MPMediaPlayerController的状态等信息并不是通过代理来和外界交互的,而是通过通知中心,因此从上面的列表中可以看到常用的一些通知。由于MPMoviePlayerController本身对于媒体播放做了深度的封装,使用起来就相当简单:创建MPMoviePlayerController对象,设置frame属性,将MPMoviePlayerController的view添加到控制器视图中。 MPMoviePlayerViewController 其实MPMoviePlayerController如果不作为嵌入视频来播放(例如在新闻中嵌入一个视频),通常在播放时都是占满一个屏幕的,特别是在iPhone、iTouch上。因此从iOS3.2以后苹果也在思考既然MPMoviePlayerController在使用时通常都是将其视图view添加到另外一个视图控制器中作为子视图,那么何不直接创建一个控制器视图内部创建一个MPMoviePlayerController属性并且默认全屏播放,开发者在开发的时候直接使用这个视图控制器。这个内部有一个MPMoviePlayerController的视图控制器就是MPMoviePlayerViewController,它继承于UIViewController。MPMoviePlayerViewController内部多了一个moviePlayer属性和一个带有url的初始化方法,同时它内部实现了一些作为模态视图展示所特有的功能,例如默认是全屏模式展示、弹出后自动播放、作为模态窗口展示时如果点击“Done”按钮会自动退出模态窗口等。 |