iOS 视频播放之MPMoviePlayerController
来源:互联网 发布:c语言数组赋初值 编辑:程序博客网 时间:2024/09/21 08:47
使用MediaPlayer.framework种的MPMoviePlayerController类来完成本地视频和网络视频播放。这个类实现了MPMediaPlayback协议,因此具备一般的播放器控制功能,但MPMoviePlayerController不是一个完整的视图,需要将其视图加入到界面中。
使用步骤
1.添加框架MediaPlayer.framework,引入头文件#import <MediaPlayer/MediaPlayer.h>
2.获取文件路径
NSString* strURL=[[NSBundle mainBundle]pathForResource:@“文件路径” ofType:nil];获取本地文件地址
NSURL *strFinalUrl=[NSURL fileURLWithPath:strURL];
NSString *strURL=@"http://192.168.1.110/xxx.mp4";获取网络文件地址
strURL=[strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *strFinalUrl=[NSURL URLWithString:strURL];
3.初始化媒体播放器
MPMoviePlayerController*moviePlayer=[[MPMoviePlayerController alloc]initWithContentURL:strFinalUrl];
moviePlayer.view.frame=xxx;设置播放界面视图大小。
moviePlayer.view.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;//设置变化的横竖屏
[self.view addSubview:moviePlayer.view];//播放器视图需要放到当前视图才能显示
4.对于视频播放的一些操作
[moviePlayer play];//播放
[moviePlayer pause];//暂停
[moviePlayer stop];//停止
5.添加通知
NSNotificationCenter *notificationCenter=[NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self selector:@selector(mediaPlayerPlaybackStateChange:) name:MPMoviePlayerPlaybackStateDidChangeNotificationobject:moviePlayer];//播放状态变化的通知
[notificationCenter addObserver:self selector:@selector(mediaPlayerPlaybackFinished:) name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];//播放结束的通知
[[NSNotificationCenter defaultCenter] removeObserver:self];//移除所有通知监控
视频播放器具体属性、方法、通知见下:
属性说明
@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将要进入全屏
MPMoviePlayerWillExitFullscreenNotification将要退出全屏
MPMoviePlayerDidExitFullscreenNotification退出全屏后
MPMoviePlayerIsAirPlayVideoActiveDidChangeNotification当媒体开始通过AirPlay播放或者结束AirPlay播放
MPMoviePlayerReadyForDisplayDidChangeNotification视频显示状态改变
MPMovieMediaTypesAvailableNotification确定了媒体可用类型后
MPMovieSourceTypeAvailableNotification确定了媒体来源后
MPMovieDurationAvailableNotification确定了媒体播放时长后
MPMovieNaturalSizeAvailableNotification确定了媒体的实际尺寸后
MPMoviePlayerThumbnailImageRequestDidFinishNotification缩略图请求完成之后
MPMediaPlaybackIsPreparedToPlayDidChangeNotification做好播放准备后
- iOS 视频播放之MPMoviePlayerController
- iOS视频播放-MPMoviePlayerController
- ios开发之 MPMoviePlayerController 视频播放器
- ios开发之 MPMoviePlayerController 视频播放器
- iOS视频播放器MPMoviePlayerController
- 6.iOS 视频播放 MPMoviePlayerController
- iOS MPMoviePlayerController使用,播放视频
- iOS之AVPlayer、MPMoviePlayerController、MPMoviePlayerViewController、AVPlayerViewController播放音乐和视频
- IOS视频开发之MPMoviePlayerController
- iOS视频播放 [MPMoviePlayerController]
- MPMoviePlayerController 视频播放器—IOS开发
- iOS远程和本地视频播放-----MPMoviePlayerController
- iOS播放视频 MPMoviePlayerViewController 和 MPMoviePlayerController 使用说明
- ios学习--MPMoviePlayerController播放视频的方法
- iOS MPMoviePlayerController(视频播放器)~demo
- iOS 视频播放(AVPlayer、MPMoviePlayerController、MPMoviePlayerViewController 区别)
- 使用MPMoviePlayerController播放视频
- MPMoviePlayerController视频播放器
- sqlserver查询N天前的记录
- iOS开发之高效绘图,通过一个绘图应用进行讲解
- Qt 路径操作(代码)
- eclipse插件开发收集资料
- 科研中您做的内容有用吗?
- iOS 视频播放之MPMoviePlayerController
- 如何把表格做成热点图
- fullpage学习笔记
- Python.androguard -- 安卓的逆向分析工具
- 获取 IDFA 标示当设备唯一识别, 并保存到 KeyChain 中
- 161008数组的创建与使用
- 64 位系统 vs2013 配置 OpenCV-3.1.0
- 计算百度地图2点间的距离
- 基于jquery 和 FormData 最简单图片异步上传