AVPlayer 视频播放
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 视频播放的更多相关文章
- iOS AVPlayer视频播放器
代码地址如下:http://www.demodashi.com/demo/11168.html 一.运行效果 二.实现过程 ①.创建播放器avPlayer //创建播放器 url = [url str ...
- iOS 10 系统 AVPlayer视频播放不了问题解决
使用[AVAudioPlayer Play]时出现了异常... 由于xcode中设置了当所有异常出现时的断点,,解决办法是将all改为Objective-C: libc++abi.dylib`__cx ...
- iOS - 视频循环播放
录制完视频后,我们想在录制视频的预览层上无限循环播放我们的小视频,是不是很炫酷,这时候我们就有三中选择了:1.MPMoviePlayerController2.AVPlayer3.AVAssetRea ...
- iOS学习笔记26-视频播放
一.视频 在iOS中播放视频可以使用两个框架来实现: MediaPlayer框架的MPMoviePlayerController和MPMoviePlayerViewController AVFound ...
- github视频录制播放相关功能-参考
lookingstars/JZVideoDemo 视频播放器 Updated on 11 Aug Objective-C 15 10 caoguoqing/VideoEditDemo iOS vi ...
- iOS:基于AVPlayer实现的视频播放器
最近在学习AVFoundation框架的相关知识,写了一个基于AVPlayer的视频播放器,相关功能如下图: 代码github:https://github.com/wzpziyi1/VideoPla ...
- iOS - AVPlayer 音视频播放
前言 NS_CLASS_AVAILABLE(10_7, 4_0) @interface AVPlayer : NSObject @available(iOS 4.0, *) public class ...
- iOS: ios视频播放(MPMediaPlayerController,AVPlayer,AVPlayerViewcontroller、ffmpeg-AVPlayer)
介绍: 和音频播放一样,ios也提供个很多的API.如mediaPlayer.framework下的MPMediaPlayerController.AVFounditon.framework下的AVP ...
- ios开发视频播放后台下载功能实现 :1,ios播放视频 ,包含基于AVPlayer播放器,2,实现下载,iOS后台下载(多任务同时下载,单任务下载,下载进度,下载百分比,文件大小,下载状态)(真机调试功能正常)
ABBPlayerKit ios开发视频播放后台下载功能实现 : 代码下载地址:https://github.com/niexiaobo/ABBPlayerKit github资料学习和下载地址:ht ...
随机推荐
- [Bootstrap] 5. Button and well
Element Identification There are a number of classes in Bootstrap that help add prominence to a page ...
- IOS开发-加载本地音乐
IOS开发-加载本地音乐 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text() ...
- Android TabHost TabWidget 去除黑线(底部下划线)
采用TabHost布局时,往往会发现默认的系统风格与软件风格很不协调,比如TabWidget的下划线影响布局效果.通常情况下会去除其下划线.如果是采用xml布局文件,在TabWidget的属性项设置a ...
- php中setcookie函数用法详解(转)
php中setcookie函数用法详解: php手册中对setcookie函数讲解的不是很清楚,下面是我做的一些整理,欢迎提出意见. 语法: bool set ...
- Array.prototype.slice.call(arguments) 类数组转成真正的数组
Array.prototype.slice.call(arguments) 我们知道,Array.prototype.slice.call(arguments)能将具有length属性的对象转成数 ...
- Maven项目中如何添加日志
- 将指定SQL的执行计划从共享池删除的方法
如果Oracle的优化器产生了某种错误的执行计划,或者我们希望Oracle对于某个SQL重新进行分析,那么就需要这个SQL的执行计划在共享池中过期,而简单的方法在10.2.0.4以后才出现. 对于 ...
- jsp 用application对象制作留言板
<%@ page contentType="text/html; charset=gb2312"%> <html> <body> <for ...
- (inline)内联函数在IOS开发中的使用
今天在阅读YYKit源码(https://github.com/ibireme/YYKit.git)时发现在YYKitMacro.h组件中大量使用的内联函数,例如此文件中的一个函数 static in ...
- RPM的基础命令/yum基本命令
rpm的使用方式非常简单,常用的一些命令如下: 安装软件:rpm -ivh *.rpm 卸载软件:rpm -e 软件名 升级形式安装:rpm -U *.rpm 常用参数: -v 显示详细信息 -h 显 ...