AV Foundation入门
1.1 AV Foundation的含义
AV Foundation是苹果OS X系统和iOS系统中用于处理基于时间的媒体数据的高级Object-C框架。通过开发所需的工具提供了大量的功能集,让开发者能够基于苹果平台创建当下最先进的媒体应用程序。
1.2 AV Foundation的适用范围
学习AV Foundation的首要步骤之一就是要知道他在苹果体系所有的媒体资源分类中的适用范围。
框架及功能
- Core Audio
Core Audio是OS X和IOS系统上处理所有音频 事件的框架。Core Audio是有多高框架整合在一起的总称,为音频和MIDI内容的录制,播放和处理提供相应的接口。Core Audio也提供高级的接口,比如通过Audio Queue Services框架所提供的那些接口,主要处理基本的音频播放和录音相关功能。同时还会提供相对低层级的接口,尤其是Audio Units接口,它们提供了针对音频信号进行完全控制的功能,并通过Audio Units让你能够构建一些复杂的音频处理模式,就像通过苹果公司的Logic Pro X和Avid’s Pro Tolls工具所实现的功能一样。
- Core Video
Core Video是OS X 和IOS系统上针对数字视频所提供的管道模式。Core Video为其相对的Core Media提供图片缓存和缓存支持,提供了一个能够对数字视频逐帧访问的接口。该框架通过像素格式之间的转换并管理同步事项时的复杂的工作得到了有效简化。
- Core Media
Core Media 是AV Foundation所用到的低层级媒体管道的一部分。它提供针对音频样本和视频帧处理所需的低层级数据类型和接口。Core Media还提供了AV Foundation用的的基于CMTime数据类型的时间模型。CMTime及其相关数据类型一般在AV Foundation处理基于时间的操作时使用。
- Core Animation
Core Animation时OS X和 iOS 提供的合成及动画相关框架。主要功能就是提供苹果平台所具有的美观,流畅的动画效果。提供了一个简单,声明行的编程模式,并已经封装了支持OpenGL 和OpenGL ES 功能的基于Object-C的各种类。使用Core Animation时,对于食品内容的播放和视频捕获这两个动作,AVFoundation 提供了硬件加速机制来对整个流程进行优化。AVFoundation 还可以利用Core Animation让开发者能够在视频编辑和播放过程中添加动画标题和图片效果。
处于高层级框架和低层级框架之间的就是AV Foundation。再整体媒体分类图中AV Foundation的地位举足轻重,其提供了很多底层级框架才能实现的功能和性能,并且是以更简单的Object—C接口方式实现的。同时它也可以和高层级的框架无缝衔接,比如Media Player和Assets Library,使用这两个框架所提供的服务并在需要更高级的功能时,也可以直接与Core Media和Core Audio进行交互。此外,由于AV Foundation处于UIkit和AppKit层之下,这也意味着你可以在两个平台下使用这个媒体框架。
解析AV Foundation
AV Foundation所提供的一些核心功能
1.3.1音视频播放和记录
AVAudioPLayer和AVAudioRecoder可以在应用程序中提供一种更简单的整合音视频播放和记录功能。这些方法并不是AV Foundation用于播放和记录的唯一方式,却是学起来最简单并且功能最强大的方法。
1.3.2视频播放
AV Foundation框架可以让你播放从本地文件或远程流中获取的视频资源,并对视频播放和内容展示进行控制。核心类是AVPlayer和AVPlayerItem。
1.3.3媒体捕捉
AV Foundation提供的API集可以对设备进行精密控制,摄像头捕捉的核心类是AVCaptureSession,其作用为所有活动的汇集点来接收摄像头设备由各路流发过来的电影和图片。
1.3.4媒体编辑
AV Foundation对媒体资源的整合和编辑提供了强有力的支持。允许创建可以将多个音频和视频资源进行组合的应用程序,允许修改和编辑独立的媒体片段,修改音频文件的参数以及添加动画标题和场景切换效果。
1.3.5媒体处理
当需要执行更高级的媒体处理任务时,可以使用AVAssetReader和AVAssetWriter类来实现这些功能。它们提供了直接访问视频帧和音频样本的功能。