1. AVPlayer

AVPlayer 是一个用来播放基于时间的视听媒体的控制器对象(一个队播放和资源时间相隔信息进行管理的对象,而非一个视图或窗口控制器).

AVPlayer支持播放从本地, 分步下载或通过HTTP Live Streaming协议得到的流媒体, 并在多种播放场景中播放这些视频资源.

开发者通过AVPlayer框架提供的应用程序接口来开发控制播放基于时间的媒体的用户界面.

AVPlayer只管理一个单独资源的播放, 但是框架还体用了AVPlayer的一个子类AVQueuePlayer, 通过它可以

AVPlayer是一个不可见组件,对于播放MP3, ACC等音频文件, 没有可视化界面不会有什么问题, 但是对于想MP4等视频类文件就会给用户非常差的体验, 而要将视频资源导出到用户界面的目标位置, 需要使用AVPlayerLayer类.

2. AVPlayer

AVPlayerLayer构建于Core Animation之上(AVPlayerLayer扩展了Core Animation的CALayer), 是AV Foundation中能找到的位数不多的可视化组件.

Core Animation是Mac和iOS平台上赋值图形渲染与动画的基础框架,主要用于这些平台资源的美化和动画流畅度提升.

Core Animation 本身具有基于时间的属性, 并且由于他基于OpenGL, 所以具有很好的性能, 能非常好的瞒住AVFoundation的各种需求.

AVPlayerLayer是一个相对简单的类, 使用起来也比较简单. 在这层中开发者可以自定义的只有一个属性: videoGravity

video gravity 总共有三个不同的值:

    AVLayerVideoGravityResizeAspect:  会在承载层的范围内缩放视频大小来保存视频的原始宽高比例,最常用

    AVLayerVideoGravityAspectFill: 保留视频的宽高比,并使其通过缩放填满层的范围区域,通常会导致视频图片被部分裁剪

    AVLayerVideoGravityResize:  会将视频内容拉伸来匹配承载层的范围.这是最不常用的模式, 因为它通常会导致图片扭曲

                   而导致的funhouse effect效应 

 

3. AVPlayerItem

视频的播放就是使用AVPlayer来播放AVAsset.

通过AVAsset 可以找到一些用来过去数据的方法和属性,(如创建日期, 元数据, 时长等信息). 但无法获取当前时间,也不饿能够在媒体中查找特定位置.这是因为AVAsset模型只包含媒体资源的静态信息, 这些不变的属性用来描述对象的静态状态. 这意味着仅使用AVAsset对象是无法实现播放功能的.

当我们需要对一个资源及其相关曲目进行播放时, 首先需要通过AVPlayerItemTrack和 AVPlayerItemTrack类构建相应的动态内容.

AVPlayerItem会建立媒体资源动态视角的数据模型,并保存AVPlayer在播放资源时的呈现状态

AVPlayerItem由一个或多个媒体曲目组成, 由AVPlayerItemTrack类建立模型

AVPlayerItemTrack实例用于表示播放器条目中的类型同一的媒体流,比如音频或视频

AVPlayerItem中的曲目直接与基础AVAsset中的AVAssetTrack实例相对应

AVPlayer 视频播放的更多相关文章

  1. iOS AVPlayer视频播放器

    代码地址如下:http://www.demodashi.com/demo/11168.html 一.运行效果 二.实现过程 ①.创建播放器avPlayer //创建播放器 url = [url str ...

  2. iOS 10 系统 AVPlayer视频播放不了问题解决

    使用[AVAudioPlayer Play]时出现了异常... 由于xcode中设置了当所有异常出现时的断点,,解决办法是将all改为Objective-C: libc++abi.dylib`__cx ...

  3. iOS - 视频循环播放

    录制完视频后,我们想在录制视频的预览层上无限循环播放我们的小视频,是不是很炫酷,这时候我们就有三中选择了:1.MPMoviePlayerController2.AVPlayer3.AVAssetRea ...

  4. iOS学习笔记26-视频播放

    一.视频 在iOS中播放视频可以使用两个框架来实现: MediaPlayer框架的MPMoviePlayerController和MPMoviePlayerViewController AVFound ...

  5. github视频录制播放相关功能-参考

    lookingstars/JZVideoDemo  视频播放器 Updated on 11 Aug Objective-C 15 10 caoguoqing/VideoEditDemo  iOS vi ...

  6. iOS:基于AVPlayer实现的视频播放器

    最近在学习AVFoundation框架的相关知识,写了一个基于AVPlayer的视频播放器,相关功能如下图: 代码github:https://github.com/wzpziyi1/VideoPla ...

  7. iOS - AVPlayer 音视频播放

    前言 NS_CLASS_AVAILABLE(10_7, 4_0) @interface AVPlayer : NSObject @available(iOS 4.0, *) public class ...

  8. iOS: ios视频播放(MPMediaPlayerController,AVPlayer,AVPlayerViewcontroller、ffmpeg-AVPlayer)

    介绍: 和音频播放一样,ios也提供个很多的API.如mediaPlayer.framework下的MPMediaPlayerController.AVFounditon.framework下的AVP ...

  9. ios开发视频播放后台下载功能实现 :1,ios播放视频 ,包含基于AVPlayer播放器,2,实现下载,iOS后台下载(多任务同时下载,单任务下载,下载进度,下载百分比,文件大小,下载状态)(真机调试功能正常)

    ABBPlayerKit ios开发视频播放后台下载功能实现 : 代码下载地址:https://github.com/niexiaobo/ABBPlayerKit github资料学习和下载地址:ht ...

随机推荐

  1. 手把手教你Android来去电通话自动录音的方法

    我们在使用Android手机打电话时,有时可能会需要对来去电通话自动录音,本文就详细讲解实现Android来去电通话自动录音的方法,大家按照文中的方法编写程序就可以完成此功能. 来去电自动录音的关键在 ...

  2. Asp.Net转换Html加号显示为空格的字符!(自已备用)

    Asp.Net转换Html显示为空格的字符!(自已备用) 显示+(加号),须要替换一下!

  3. VS2012 编译GDAL

    先安装VS 2012, 然后下载GDAL最新版本代码,解压. 用管理员权限打开Developer Command Prompt for VS2012终端,进入代码目录. 然后运行命令: nmake / ...

  4. 第二次作业第2题_JH

    2.每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令.比较项目的新旧版本的差别. (1)创建一个HelloWorld ...

  5. 万能的Entry,两个变量的Model/JavaBean再也不用写了!

    前言 很多时候传数据需要只含两个变量的Model/JavaBean,但就为了两个变量去写一个Model/JavaBean实在是麻烦,而且类型固定重用性低.比如: 1.网格显示的头像-名称 需要 Str ...

  6. Elasticsearch aggregations API

    聚合能力 Aggregation API 类似 SQL 中的 GROUP BY 语句,可以以某个字段来进行分组. Aggregation API 支持分级分组,多级的分组过程是由外到里的. Aggre ...

  7. 常用CentOS 6/7 扩展源

    1.系统自带 baseextrasupdates 2.epel yum install epel-release https://fedoraproject.org/wiki/EPEL 3.el(用于 ...

  8. win7 Sendto修改

    sendto目录现在被移到了这里 %APPDATA%\Microsoft\Windows\SendTo %APPDATA%是个环境变量,具体来说是在这里: C:\users\<username& ...

  9. 使用VS建立Web网站及IIS

    一:网站运行的一般原理: 1.所有WEB程序运行都需要一个东西:Web服务器软件. 2. 网站分为动态页面和静态页面 3. web服务器软件的作用:接收请求,响应请求. 被动——无请求则无响应. Ja ...

  10. MySQL 세자리 마다 콤마 찍기

    MySQL에서 세자리 마다 콤마를 찍으려면 FORMAT 함수를 이용하시면 됩니다. FORMAT( 컬럼명, 소수점이하 자리수 ) 여기서 컬럼의 자료형이 varchar와 같은 문자형이 ...