AV Foundation 是 OSX 系统和 iOS 系统中用于处理基于时间的媒体数据的高级 objectivec 框架,其设计过程高度依赖多线程机制,充分利用了多核硬件优点,大量使用 Block 和 GCD 机制。AVFoundation 能与高层级框架无缝衔接,也能提供低层级框架的功能和性能。算法
AVFoundation 提供的核心功能以下所示多线程
将现实世界的模拟信号转换为可以被计算机存储和传输的数字信号,须要通过模拟-数字转换过程,也称为采样。数字化采样有两种方式,一种是时间采样,即捕捉一个信号周期内的变化,一种是空间采样,通常用于图片数字化和其余可视化媒体内容数字化上,它对一个图片在必定分辨率下捕捉其亮度和色度,进而建立出由该图片的像素点数据所构成的数字化结果。视频既有空间属性又有时间属性,因此数字化时均可以使用。框架
对于一个音频,麦克风负责将物理振动转化为相同频率和振幅的电流信号,以后经过线性脉冲编码调制(LPCM)进行编码。LPCM 采样或测量一个固定的音频信号,其周期率被称为采样率。采样频率达到奈奎斯特频率(采样对象最高频率的 2 倍)时便可准确表现原始信号的信息。另外一方面编码字节数(也称位元深度)表现了采样精度,如位元深度为 8 位的编码可以提供 256 个离散级别的数据,CD 音质位元深度为 16。性能
原始、未压缩的数字化媒体数据须要大量的存储空间,所以须要进行压缩。编码
因为人类的眼睛对亮度的敏感度高于颜色的敏感度,所以能够大幅下降存储在每一个像素中的颜色信息,而不至于图片质量严重受损,这一过程称为色彩二次采样。线程
视频数据都使用 YCbCr 颜色模式,也称为 YUV 模式,与 RGB 视频信号传输相比,它最大的优势在于只需占用极少的频宽。其中 “Y” 表示明亮度(Luminance或Luma),也就是灰阶值;而 “U” 和 “V” 表示的则是色度。设计
色彩二次抽样一般用一个三分比值表示,J:a:b(例如4:2:2),形容一个以J个像素宽及两个像素高的概念上区域:cdn
J:水平抽样参照(概念上区域的宽度)。一般为4 a:在J个像素第一行中的色度抽样数目(Cr, Cb) b:在J个像素第二行中的额外色度抽样数目(Cr, Cb)视频
下面是抽样示意图对象
4:4:4 比例下全彩色信息均可被保存,在 4:2:2 比例下色彩信息为每两个水平像素的平均值,在 4:2:0 比例下色彩信息为水平和垂直 4 个像素的平均值。
编解码器使用高级压缩算法对须要保存或发送的音频或视频数据进行压缩和编码,同时能够将压缩文件解码成适合播放和编辑的媒体资源文件。编解码器分无损压缩和有损压缩,zip 和 gzip 就是无损压缩。
AVFoundation 只提供 H.264 和 Apple ProRes 两种媒体类型的支持,但 iOS 只支持 H.264。
H.264 规范是 Motion Picture Experts Group(MPEG)定义的 PMEG-4 的一部分,与其余 MPEG 压缩同样,H.264 经过下面两个维度来压缩视频文件尺寸:
帧内压缩经过消除包含在每一个独立视频帧内的色彩及结构中的冗余信息来进行压缩,所以能够在不下降图片质量状况下尽量缩小尺寸,这一过程建立的帧称为 I-frames。
帧间压缩将不少帧组合为一组图片(简称 GOP),对于 GOP 所存在的时间维度的冗余能够被消除。GOP 存储三种不一样类型的帧:
AVFoundation 普遍使用 AAC(高级音频编码) 做为音频解码器,它是 H.264 标准相应的音频处理方式,优于 MP3 格式。