AVFoundation介绍

AVFoundation是苹果OSX系统和iOS系统中用于处理基于时间的媒体数据的高级框架

AVFoundation相关框架

  • Core Audio

    Core Audio是OSX和iOS系统上处理所有音频时间的框架,Core Audio是由多个框架整合在一起的总称,为音频和MIDI内容的录制,播放,和处理提供接口。

  • Core Video

    Core Video 是OSX和iOS系统上针对数字音频所提供的管道模式,Core Video为其相对的Core Media提供图片缓存和缓存池支持,提供了一个能够对数字视频逐帧访问的接口,该框架通过像素格式自检的转换并管理视频同步事项使得复杂的工作得到有效简化。

  • Core Media

    Core Media 是AVFoundation所用到的底层级媒体管道的一部分。提供针对音频样本和视频帧处理所需的低层级数据类型和接口。Core Media还提供了AVFoundation用到的基于CMTime数据类型的时间模型。CMTIme及相关数据类型一般在AVFoundation处理基于时间的操作时使用。

  • Core Animation

    Core Animation 是OSX和iOS系统提供的合成及动画相关的框架。主要功能就是提供苹果平台所具有的美观和流畅的动画表现。他提供了一个简单,声明性的编程模式,并已经封装了支持OpenGL和OpenGL ES功能的各种类。使用Core Animation时,对与视频内容的播放和视频捕获这两个动作,AVFoundation提供了硬件加速机制来对与整个流程进行优化,AVFoundation还可以利用Core Animation让开发者能够在视频编辑和播放的过程中添加动画标题和图片效果。

数字采样

对媒体内容进行数字化的方式主要有两种:

  • 时间采样 这种方法是捕捉一个信号周期内的变化。比如当在iPhone上记录一个音频备忘录时,在录制期间你所有的音高变化和声调变化都会被捕捉下来。
  • 控件采样 一般用在图片数字化和其他可视化媒体内容数字化的过程中。空间采样包含一幅图片在一定的分辨率之下捕捉其亮度和色度,进而创建有该图片的像素点数据所构成的数字化的结果。当对一段视频进行数字化时,这两种方式都有可以用,因为通常的视频信号既有空间属性,也有时间属性。

音频采样

当你听到一个人的声音时,你真正听到是声波通过一定介质传播过来的震动。比如当你在吉他上弹奏G弦时,当触击吉他琴弦时,会产生特定频率和振幅的震动。琴弦前后震动的速率和频率决定了声音的音调,低音符产生低且慢速的频率,高音符产生高且快的频率。振幅用来测量频率的相对强度,可以大致表示出你所听到的声音的音量。

  • 振幅 代表了电压的强度和相应信号的强度。
  • 频率 他的测量单位是Hz(表示在一定周期内震动完成的循环的次数),人类所能听到的音频范围 5Hz~20KHz

采样率: 采样或者测量一个固定的音频信号的周期 单位Hz

  • 尼奎斯特频率: 采样频率为采样对象最高频率的二倍。如果要捕捉一个音频的最高频率为10kHz,那么所需要的采样频率为20kHz。比如使用CD录制音频的采样率为44.1kHz,这就意味着能捕捉到的最大的频率为22.05kHz。刚好高过人耳能够识别的频率。

位元深度: 保存样本值的字节数。它定义了在线性维度上可行的离散度。为每个样本的整体量化分配过少的未元深度,会导致数字音频信号产生噪音和扭曲。使用位元深度为8的方法可以提供256个离散级别的数据,这个级别的采样率已经足够了,但是对于大部分的音频内容来说还不够高。CD音质的位元深度是16,可以达到65536个离散级别。专业级别的音频的位元深度可以达到24或者更高。

数据压缩

帧率: 视频1秒内所能展现的帧数被称为帧率 单位FPS。 视频文件由一系列称为帧的图片组成,在视频文件的时间轴线上,每一帧都表示一个场景,要创建连续的的画面,需要在短时间内提供特定数量的帧。

为啥要对数据进行压缩?

目前比较流行的视频资源的宽高比是16:9,是指没16个水平像素对应9个垂直像素。比如一个视频尺寸是1280:720,每个像素使用RGB的色彩空间,这就意味着红色(255)占8位,绿色255)占8位,蓝色(255)占8位。在60FPS下,每秒播放所需要的大致存储需求:

(24 * 1280 * 720 * 60) /(8*1024 * 1024) 约等于 158MB/s ,556GB/h

什么是YUV

YUV 是一种彩色编码系统,主要用在视频、图形处理流水线中(pipeline)。相对于 RGB 颜色空间,设计 YUV 的目的就是为了编码、传输的方便,减少带宽占用和信息出错。对于视频帧的裸数据表示,其实更多的是YUV数据格式的表示, YUV主要应用于优化彩色视频信号的传输,使其向后兼容老式黑白电 视。与RGB视频信号传输相比,它最大的优点在于只需要占用极少的频 宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度 (Luminance或Luma),也称灰阶值;而“U”和“V”表示的则是色度 (Chrominance或Chroma),它们的作用是描述影像的色彩及饱和度, 用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将 RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面—— 色调与饱和度,分别用Cr和Cb来表示。其中,Cr反映了RGB输入信号 红色部分与RGB信号亮度值之间的差异,而Cb反映的则是RGB输入信 号蓝色部分与RGB信号亮度值之间的差异

你可能感兴趣的:(AVFoundation介绍)