与时俱进的IT

UI(三十八)视频播放

2018-07-30  本文已影响0人  社会主义顶梁鹿

视频

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

上一篇 下一篇

猜你喜欢

热点阅读