音视频笔记(2)(about AVPlayerItem)

Advertisement

文档地址:

https://developer.apple.com/reference/avfoundation/avplayeritem

1、AVPlayerItem is a dynamic object.In addition to its property values that can be changed by you ,many of its read-only property values can be changed by the associated AVPlayer during the item’s preparation and playback.

AVPlayerItem 是一个动态的对象,除了它的属性值能被你改变之外,它的只读属性值在这个item的准备和播放的中能被相关的AVPlayer改变。

2、You can use key-value observing to observe these state changes as they occur.One of the most important player item properties to observe is its status.

监听中最重要的状态时status.

3、The status indicates if the item is ready for playback and generally available for use.When you first create a player item, its status has a value of unknown ,meaning its media hasn’t been loaded and has not yet been enqueued for playback.Associating
a player item with an AVPlayer immediately begins  enqueuing the item’s media and preparing it for playback, but you need to wait until its status changes to readyToPlay before it’s ready for use.

这个状态显示这个item是否准备播放或者适合使用。当你最初创建的时候,它的状态是一个unknown值,意味着它的媒体没有被加载,也还没有入队播放,将item 和AVplayer连接会立刻开始入队item的媒体项目,并且准备播放,但是你需要等到状态变为readyToPlay才行。

4、you can use the methods of the AVAsynchronousKeyValueLoading protocol to load the values you need .Alternatively ,AVPlayerItem can automatically load the needed asset data for you by passing the desired set of keys to its init(asset:automticallyLoadedAssetKeys:)
initializer

你可以用AVAsynchronousKeyValueLoading的协议方法来加载你需要的值,另外,AVPlayerItem通过初始化方法init...来自动加载需要的asset data.

5、func prepareToPlay() {

let url = <#Asset URL#>

asset = AVAsset(url: url)

let assetKeys = [

“playable”,

“hasProtectedContent”

]

playerItem = AVPlayerItem(asset: asset, automaticallyLoadedAssetKeys: assetKeys)

//Register as an observer of the player item’s status property

playerItem.addObserver(self,forKeyPath: #keyPath(AVPlayItem,status),options: [.old, .new], context: &playerItemContext)

//player = AVPlayer(playerItem: playerItem)

}

6、You should call this method before associating the player item with the player to make sure you capture all state changes to the item’s status.

你应该在item和player关联之前调用这个观察者方法,这样确保你能俘获关于item的状态的所有改变。

7、To be notified of changes to the status ,you need to implement the

observaValue(forkeyPath:of :change:context) method.This method is invoked whenever the status changes giving you the chance to take some action in response.

为了知道状态的改变,你需要实现observaValue方法,这个方法被调用,当状态改变的时候给你一个机会在反馈中做一些行动。

Similar Posts:

  • [绍棠] IOS 获取设备本地音视频, 即相册视频, 音频

    1.检索音视频 PHFetchOptions *allPhotosOptions; @property (nonatomic, strong) PHFetchResult *assetsFetchResults; if (allPhotosOptions == nil) { allPhotosOptions = [[PHFetchOptions alloc] init]; allPhotosOptions.sortDescriptors = @[[NSSortDescriptor sortDes

  • Android Audio控制和MediaButton远程控制(音视频控制配合)

    使用过Android系统的朋友应该都知道,Android里面声音是区分好几种情况,每种情况下的音频大小是独立的.也就是说你调节了电话铃声大小不会影响多媒体播放的声音大小.这个涉及了AudioStream的使用,今天会详细讲解一下AudioStream相关知识.另外我们用耳机上按钮控制音乐播放器等音频程序,可以使用MediaButton来实现远程控制.另外会详细讲解MediaButton的两种注册方法以及他们的区别. (PS:新建的QQ群,有兴趣可以加入一起讨论:Android群:32259943

  • Android IOS WebRTC 音视频开发总结(六五)-- 给韩国电信巨头做咨询

    本文主要总结咨询过程中的一些问题,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam 韩国电信巨头sk想了解国内移动互联网rtc现状,所以上周请我过去给他们的相关人员做场咨询,包括市场和技术两个层面, 下面是我们交流的一些内容,整理出来供参考,内容有删减,主要基于以下2个原则: 1.为客户保守商业秘密: 2.避嫌,原因大家都懂的: 具体内容如下: 第1部分:关于行业现状的理解: 1.1.随着移动互联网的快速发展,越来越多的行业或场景需要用到音视频和实时通讯,比如

  • iOS平台上的音视频即时通讯应用开发

    现在IOS很是火热,一大堆开发人员在捣鼓IOS平台的开发,相信大家也使用过QQ的语音视频对话功能,但是不知道大家有没有试过自己来开发一个基于IOS平台的音视频即时通讯的应用,这个应用必须能够做到跨平台 支持iOS平台设备上的音频即时通讯应用开发 提供Objective-C语言API接口,开放示例源代码 集成H.264.AAC.AMR等编解码技术 封装音视频的采集.编解码.传输.显示和播放等模块 支持Android.Web.PC等设备和iOS之间的互联互通 想要在IOS平台下实现音视频通信,最快捷

  • HTML5中的音视频处理

    * 音视频处理 * 视频处理 * 基本内容 * 使用Flash技术处理HTML页面中的视频内容 * 包含音频.动画.网页游戏等 * 特点 * 浏览器原生不支持(IE浏览器要求安装ActiveX组件) * 性能不好(不能过多地使用) * 智能移动端并不支持Flash技术 * 命运 * Flash的母公司Adobe公开宣布放弃 * 目前用于替代Flash技术最好的选择 - HTML5 * 几乎所有浏览器原生支持<video>元素 * 性能更高 * 智能移动端支持非常好 * 如何实现视频处理 * &

  • 【Anychat音视频开发】相对路径与绝对路径详解

    表示文件路径的方式有两种,相对路径和绝对路径.在网页设计中通过路径可以表示链接,插入图像.Flash.CSS文件的位置. 相对路径:以当前文件所在位置为参考点,而建立出的目录路径. 绝对路径:以Web 站点根目录为参考点的目录路径.不管怎么引用,都只有一个url,如http://ituibar.com. 先来看 相对路径: 表示同级目录文件的引用 2.html和3.html在同一个文件夹下, 如果2.html链接到3.html,可以在2.html中这样写: <a href="3.html&

  • 音视频互动平台应用分析

    音视频互动平台已成为行业音视频即时通讯的新热点,随着社会的发展与网络技术的进步,音视频技术以全新领域凸显了网络信息时代的飞跃发展.近年来,音视频即时通讯的应用,如聊天室,网络教育,应急指挥,远程医疗,数字电视等不断创新的成就更是全球关注的焦点. 一.需求庞大 目前,音视频即时通讯已是旺盛的市场必不可少的需求.从行业分布来看,集团公司的贯穿沟通纽带的即时通讯,医疗行业实现社区医院跟市医院的简单点对点音视频即时通讯.教育机构学校与教师,教师与学生之间的即时通讯.公共安全应急指挥领域的突发事件,上级跟

  • 音视频同步-时间戳

    媒体内容在播放时,最令人头痛的就是音视频不同步.从技术上来说,解决音视频同步问题的最佳方案就是时间戳:首先选择一个参考时钟(要求参考时钟上的时间是线性递增的):生成数据流时依据参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间):在播放时,读取数据块上的时间戳,同时参考当前参考时钟上的时间来安排播放(如果数据块的开始时间大于当前参考时钟上的时间,则不急于播放该数据块,直到参考时钟达到数据块的开始时间:如果数据块的开始时间小于当前参考时钟上的时间,则"尽快"播放这块数据

  • 详解音视频即时通讯开发平台的开发步骤

    下面列出AnyChat Platform Core SDK基本开发流程,适用于开发视频会议系统.语音视频聊天系统.远程教育平台以及即时通讯平台(IM)等. 一.初始化 该部分是首先要完成的,用于设置SDK的一些行为,包括设置对应的回调函数.设置SDK组件路径.设置是否产生日志文件等,通常初始化AnyChat SDK的代码如下(C++): 01.// 打开(关闭)SDK的日志记录功能 02.BRAC_ActiveCallLog(TRUE); 03. 04.// 设置SDK核心组件所在目录 05.C

  • 音视频开发平台

    平台介绍 AnyChat音视频互动开发平台是一套跨平台的即时通讯解决方案,基于先进的H.264视频编码标准.AAC音频编码标准与P2P技术,支持高清视频,整合了佰锐科技在音视频编码.多媒体通讯领域领先的开发技术和丰富的产品经验而设计的高质量.宽适应性.分布式.模块化的网络音视频互动平台. AnyChat音视频互动开发平台包含了音视频处理模块(采集.编解码).流媒体管理模块(丢包重传.抖动平滑.动态缓冲).流媒体播放模块(多路混音.音视频同步)以及P2P网络模块(NAT穿透.UPnP支持.IP组播