视频播放器

来源:互联网 发布:linux查看进程id 编辑:程序博客网 时间:2024/05/01 00:39

iOS 视频播放器,有四种实现方案

1.AVPlayer

2.MPMoviePlayerController

3.MPMoviePlayerViewController

4.针对于第2种和第3种实现方案, 在iOS9.0之后, 统一使用AVPlayerViewController

支持的视频编码格式很有限:H.264、MPEG-4,扩展名(压缩格式):.mp4、.mov、.m4v、.m2v、.3gp、.3g2等

解码框架有:VLC、ffmpeg

–视频播放–
1> AVPlayer
–能播放本地、远程的音频、视频文件–
–基于Layer显示,得自己去编写控制面板(AVPlayerLayer)–

2> MPMoviePlayerController
–能播放本地、远程的音频、视频文件–
–自带播放控制面板(暂停、播放、播放进度、是否要全屏)–

–MPMoviePlayerViewController是在iOS3.2以后的平台上使用。MPMoviePlayerController在3.2之前使用,虽然在3.2之后也能使用,但是使用方法略有改变,建议3.2之后使用MPMoviePlayerViewController。–
–3.2之后,MPMoviePlayerController作为MPMoviePlayerViewController的一个属性存在。–

3> MPMoviePlayerViewController
–能播放本地、远程的音频、视频文件–
–内部是封装了MPMoviePlayerController–
–播放界面默认就是全屏的–
–如果播放功能比较简单,仅仅是简单地播放远程、本地的视频文件,建议用这个–

4.AVPlayerViewController
–> 优点: –
–自带的播放控制UI, 不需要手动添加–
–此控制器是视图控制器, 可以弹出, 可以压栈–
–也可以手动调整视图大小, 添加到其他视图上–
– 缺点:–
–不能自定义UI–

视频直播方面的开发任务

–IJKPlayer是国内B站的bbcallen大大写的开源视频播放项目。除了B站,美拍和斗鱼的App都有在使用的样子,应该说经得起行业领域的考验了–

http://www.oschina.net/p/ijkplayer
一个分装的不错的播放器,拿过来就用
https://github.com/chenhuaizhe/CYAVPlayer.git

区别
1.AVPlayer(远程⾳音乐/播放视频)—>添加layer
–AVPlayer本身并不能显示视频,而且它也不像MPMoviePlayerController有一个view属性。如果AVPlayer要显示必须创建一个播放器层AVPlayerLayer用于展示,播放器层继承于CALayer,有了AVPlayerLayer之添加到控制器视图的layer中即可–

2.MPMoviePlayerController—>给.view设置frame,将这个view 添加到某一个View

3.MPMoviePlayerViewController(modal出来,自动播放,一定全屏播放)

–@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 做好播放准备后–

0 0
原创粉丝点击