视频
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 创建视频播放视图的控制器