视频
1、介绍
(0)ios9之后的改变弃用了:MPMoviePlayerViewController(框架:MediaPlayer)
新加入了:AVPlayerViewController(框架:AVFoundation #import
)
(1)AVPlayer用来播放音视频可以单独使用(必须与AVPlayerLayer配合使用)也可以直接使用AVPlayerViewControl
(2)AVPlayerItem音视频里面播放的对象
(3)AVPlayerLayer播放显示视频的图层界面(图层比起view不能添加响应事件)
(4)AVPlayerViewController视图控制器可以显示视频,并且调节控件
2、使用
(1)AVPlayer直接播放:AVPlayer(视频播放器)去播放->AVPlayerItem(视频播放的元素)->AVPlayerLayer(展示播放的视图)
步骤:
《1》创建AVPlayerItem视频内容相关
<1>playerItemWithURL:类方法通过URL地址创建要播放的对象(可以是本地、也可以在线)
<2>initWithURL:构造方法
<3>playerItemWithAsset:通过设备相册里面的内容创建一个要播放的对象
<4>playerItemWithAsset:automaticallyLoadedAssetKeys自动根据要求的Key去加载相册里面的内容
<5>initWithAsset:
automaticallyLoadedAssetKeys:构造方法
<6>duration总时长
<7>status加载状态
①、AVPlayerItemStatusUnknown未知状态
②、AVPlayerItemStatusReadyToPlay准备播放状态
③、AVPlayerItemStatusFailed失败状态
<8>时间控制的类目
①、currentTime获得当前播放时间
②、forwardPlaybackEndTime跳到结束位置
③、reversePlaybackEndTime跳到开始位置
④、seekToTime:跳到指定位置
<9>
《2》创建AVPlayer视频操作相关
<1>playerWithURL:根据URL去创建播放器不需使用item
<2>initWithURL:
<3>playerWithPlayerItem:需要传入一个视频播放内容
<4>initWithPlayerItem:
<5>play播放
<6>pause暂停
<7>seekToTime跳转到某一个进度(拖动快进、回退)
<8>currentItem当前播放的视频元素
<9>volume调节音量
<10>externalPlaybackVideoGravity视频显示的播放样式
①、AVLayerVideoGravityResizeAspect普通的
②、AVLayerVideoGravityResizeAspectFill充满的
<11>currentTime当前播放时间(CMTime类型) CMTimeGetSeconds()通过CMTime获得当前播放时间单位是秒
《3》创建AVPlayerLayer添加到父视图
<1>playerLayerWithPlayer:->类方法根据播放器去创建一个可以显示视频的图层
<2>设置位置frame没有动画
<3>视频图层添加到父图层:[self.view.layer
addSublayer:layer];
《4》播放**播放器:[player play];
<1>获得播放结束的状态获得总时长->通过发送通知的形式获得-> AVPlayerItemDidPlayToEndTimeNotification
[[NSNotificationCenter defaultCenter]addObserver:selfselector:@selector(itemDidPlayToEndTimeNotification:) name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
<2>CMTime
->视频播放进度value timescale
CMTimeMake(<#int64_t value#>, <#int32_t timescale#>)
<3>kCMTimeZero初始进度
<4>seekToTime:跳转到某一个进度
(2)控制器播放#import
《1》AVPlayer
《2》AVPlayerViewController创建视频播放视图的控制器