AVFoundation是苹果系统OS X系统和iOS系统中用于处理基于时间的媒体数据的高级Objective-c框架。考虑到目前的硬件环境和应用程序,其设计过程高度依赖多线程机制,充分利用了多核硬件的优势并大量使用block和Grand Central Dispatch(GCD)机制,将复杂的计算过程放在后台线程运行。会自动提供硬件加速操作,确保在大部分设备上应用程序能以最佳性能运行。同时,也充分考虑了电量效率对不同设备的电量控制。此外,其从一开始就是针对64位处理器设计的,可以发挥64位处理器的所有优势。
Mac OS X和iOS为开发者提供了一系列高层级和低层级的框架来实现时基媒体(timed media)的各功能。下图为AVFoundation在整个体系中所处的角色:
在iOS中,利用UIKit框架可以很容易地将基本的静态图片和视频捕捉整合到应用中。AVKit框架用于简化目前流行的视频播放应用程序的创建过程。另外,有几个最主要的支撑框架需要了解。
Core Audio
Core Audio是苹果系统上处理所有音频事件的框架。它由多个框架整合在一起的总称,为音频和MIDI内容的录制、播放和处理提供相应的接口。例如,Core Audio提供的高层级接口,通过Audio Queue Services框架处理基本的音频播放和录制相关功能;提供的低层级接口,Audio Units提供了针对音频信号进行完全控制的功能,并构建一些复杂的音频处理模式。
Core Video
Core Video是苹果系统上针对数字视频所提供的管道模式。其为相对的Core Media提供图片缓存和缓存池支持,提供了一个能够对数字视频逐帧访问的接口。该框架通过像素格式之间的转换并管理视频同步事项使得复杂的工作得到了有效简化。
Core Media
Core Media是AVFoundation所用到的低层级媒体管道的一部分。它提供针对音频样本和视频帧处理所需的低层级数据类型和接口。Core Media还提供了AVFoundation用到的基于CMTime数据类型的时基模型。CMTime及相关数据类型一般在AVFoundation处理基于时间的操作时使用。
Core Animation
Core Animation是苹果系统提供的合成及动画相关框架。主要功能是提供苹果平台所具有的美观、流畅的动画效果。提供了一个简单、声明性的编程模式,并已经封装了支持OpenGL和OpenGL ES功能的基于Objective-C的各种类。使用Core Animation时,对于视频内容的播放和视频的捕获这两个动作,AVFoundation提供了硬件加速机制来对整个流进程优化。AVFoundation还利用Core Animation让开发者能够在视频编辑和播放过程中添加动画标题和图片效果。
AVFoundation处于高层级和低层级框架之间,提供了很多低层级框架才能实现的功能和性能,并以简单的OC接口方式实现。同时也可以和高层级框架无缝衔接,比如MediaPlayer和AssetsLibrary,使用这两个框架所提供的服务并在需要更高级的功能时,可以直接于Core Media和Core Audio进行交互。