您的位置:首页 > 移动开发 > IOS开发

AVFoundation的介绍

2016-06-22 10:40 281 查看

一、简述

AVFoundation是一个OC媒体数据的高级框架。AVFoundation的构建考虑到了目前的硬件环境和应用程序,其设计过程高度依赖多线程机制。充分利用了多核硬件的优势并大量使用block和GCD机制,将复杂的计算机进程放到了后台线程运行。会自动提供硬件加速操作,确保在大部分设备上应用程序能以最佳性能运行。该框架就是针对64位处理器设计的,可以发挥64位处理器的所有优势。

二、AVFoundation的适用范围





CoreAudio

CoreAudio是Mac OS和ios系统上处理所有音频事件的框架。Core Audio是由多个框架整合在一起的总称,为音频和MIDI内容的录制、播放和处理提供相应接口。Core Audio也提供高层级的接口,比如通过Audio Queue Services框架和所提供的那些接口,主要处理基本的音频播放和录音功能。同时还会提供相对低层次的接口,尤其是Audio Unitis接口。

Core Video

Core Video是Mac OS和ios系统上针对数字视频所提供的普通模式。Core Video为其相对的Core Media提供图片缓存和缓存池支持,提供了一个能够对数字视频逐帧访问的接口。

Core Media

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

三、数字媒体

我们看到的信号标志和所听到的音乐都是通过模拟信号传递给我们的,我们的眼睛和耳朵构造将这些信息转换为我们大脑能够解析出的电信号。现实生活中的信号是连续的,信号的频率和强度是在不断变化的;但是数字世界的信号是离散的,由0和1两个状态表示。要将模拟信号转换成我们能够存储并传输的数字信号,要经过模拟-数字转换过程,我们将这个过程称为采样(Sampling).

3.1数字媒体采样

对媒体内容进行数字化主要有两种方式。第一种称为时间采样,这种方法捕捉一个信号周期内的变化。比如当你在iphone上记录一个音频备忘录时,在录制期间你所有的音高变化和声调变化都会被捕捉下来。第二种采样方式是空间采样,一般用在图片数字化和其它可视媒体内容数字化的过程。

3.2音频采样介绍

当我们记录一个声音时,一般会使用麦克风设备。麦克风设备是将机械能量(声波)转换成(电压信号)的转换设备。目前在用的麦克风种类很多,但是这里讨论的麦克风类型我们称为电动式麦克风。人类可以听到的音频范围是20Hz~20KHz(20 000Hz).

音频数字化的过程包含一个编码方法,称为线性脉冲编码调制(linear pulse-code modulation),比较常见的说法是Linear PCM或LPCM。这个过程采样或测量一个固定的音频信号,过程的周期率被称为采样率。下面是在一秒内对信号进行7次采样及信号的数字化结果图:



显然低采样率的数字信号版本无法很好地表现原始数据。下面我们来提高采样频率



这次效果显然得到提升,但仍不能准确表示原始信号。不过通过这个示例你可以推测如果不断提高采样的频率,我们就有可能以数字化方式准确表现原始信号的信息。鉴于硬件条件我们还不能复制出完全一样的效果,但是我们能找打一个采样率用于生成足够好的数字呈现效果。我们称其为尼奎斯特频率(Nyquist rate).Harry Nyquist是贝尔实验室的一名工程师,他精确地捕捉到了一个特定频率,该频率为需要采样对象的最高频率的两倍。

除采样率外,数字音频采样的另一个重要方面是我们能够捕捉到什么精度的音频样本。振幅在线性坐标系中进行测量,所以会有Linear PCM这个术语。用于保存样本值的字节数定义了在线性维度上可行的离散度,同时这个信息也被称为音频的位元深度。为每个样本的整体量化分配过少的位结果信息会导致数字音频信号产生噪声和扭曲。使用位元深度为8的方法可以提供256个离散级别数据。对于一些音频资源来说,这个级别的采样率已经足够了,但对于大部分音频内容来说还不够高。CD音质的位元深度为16,可以达到65536个离散级别。专业级别的音频录制环境的位元深度可以达到24或更高。

对信号进行数字化时,如果能够保留原始,未压缩的数字呈现效果,就是该媒体资源最纯粹的数字形式,但这样做需要 大量的存储空间。比如一个44.1KHz、16位LPCM的音频文件每分钟可能要占用10M的空间。

视频文件由一些列称为“帧”的图片组成,在视频文件的时间轴线上每一帧都代表一个场景。要创建一个连续的运动画面,我们需要在短时间间隔内提供特定数量的帧。视频文件一秒钟内所能展现的帧数称为视频帧率,并用FPS作为单位进行测量。常见的帧率为24FPS、25FPS、30FPS。

要知道位压缩的视频内容所需的存储空间,我们首先要确定每个独立的帧有多大。我们知道许多通用的视频尺寸,但是目前视频资源最流行的宽高比为16:9,意思是每16个水平像素对应9个垂直像素。在这一宽高比之下最常见的视频尺寸是1280x720和1920x1080。那么各自的像素情况是什么样的呢?如果对每个像素点使用8为的RGB色彩空间,这就意味着红色占8位,绿色占8位,蓝色占8位。所有的输入收集好后,我们执行一些计算。

颜色分辨率帧率MB/sGB/h
24位1280x72030FPS79MB/s278GB/h
24位1920x108030FPS178MB/s625GB/h
由于大部分情况下对视频进行存储和传输都是不可取的,所以我们需要找到一种方式缩小资源尺寸。

四、数字媒体压缩

4.1、编解码器压缩

大部分音频和视频都是使用编解码器来压缩的。编解码器使用高级压缩算法对需要保存或发送的音频或视频数据进行压缩和编码,同时它还可以将压缩文件解码成适合播放和编辑的媒体资源文件。

编解码器既可以进行无损压缩也可以进行有损压缩,无损压缩编解码器以一种可以完美重构解码的方式对媒体文件进行压缩,十七称为无论编辑还是发布都比较理想的文件。有时也会作为归档文件用。我们经常使用这种压缩方式,比如我们最常用的zip和gzip即是这种方式的压缩。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios多媒体