000- AVFoundation

2020-12-29  本文已影响0人  清风烈酒2157

[toc]

前言

AVFoundation是可以用它来播放和创建基于时间的视听媒体的几个框架之一,它提供了基于时间的视听数据的详细界别上的OC接口。可以用它来检查、创建、编辑、重新编码媒体文件。也可以从设备得到输入流和实时捕捉回放过程中操控视频.

用于处理基于时间的媒体数据的高级OC框架。充分利用了多核硬件的优势并大量使用blockGrand Central Dispatch(GCD)机制将复杂的计算进程放在后台线程运行。自动提供硬件加速操作,确保在大部分设备上应用程序能以最佳性能运行

适用范围

e025720d0d37caef2ea21dda86406013
6ac2dac24f066261b60da352de74b9b3

AV Foundation的几个最主要的支撑框架及其提供的功能

OSXiOS上处理所有音频事件的框架,是由多个框架整合在一起的总称。为音频和MIDI内容的录制、播放和处理提供相应接口,也提供高层级的接口,比容通过Audio Queue Services框架所提供的那些接口,主要处理基本的音频播放和录音相关功能。也提供相对低层级的接口。

低层级媒体管道的一部分,它提供折痕对音频样本和视频帧处理所需的低层级数据类型和接口。还提供了AV用到的基于CMTime数据类型的时基模型。CMTime及其相关数据类型一般在AV处理基于时间的操作时使用

合成及动画相关框架。主要功能是提供苹果平台所具有的美观、流畅的动画效果。提供一个简单、声明性编程模式,并已经封装了支持OpenGLOpenGL ES功能的基于OC的各种累。使用Core Animation时,对于视频内容的播放和视频不捕捉这两个动作?AV还可以利用Core Animation在视频编辑和播放过程中添加动画标题和图片效果

AV处于高层级框架低层级框架之间,提供了很多低层级框架才能实现的功能和性能,并且是以更简单的OC接口方式实现,同时也可以和高层级框架无缝连接。

AV功能分解

了解数字媒体

数字媒体压缩

为缩小数字媒体文件大小,需要对齐使用压缩技术。

色彩二次抽样

视频数据是使用YCbCr颜色模式的典型案例,也常称为YUV

RGB模式来说,每个像素是由红、绿、蓝三种颜色组合而成,而YUV使用的是色彩通道UV(颜色)替换了像素的亮度通道Y(亮度)。眼睛对于亮度的敏感度要高于颜色,所以可以大幅度减少存储在每个像素中的颜色信息,不至于是图片质量严重受损,减少颜色数据的过程就成为色彩二次抽样

编解码器压缩

大部分音频和视频都是使用编解码器(codec)来压缩的,即编码器和解码器(encoder/decoder)。编解码器使用高级压缩算法对需要保存或发送的音频或视频数据进行压缩和编码,同时还可以将压缩文件解码成为适合播放和编辑的媒体资源。编解码器可以进行无损压缩也可以机型有损压缩

视频编解码器

对于视频编辑码而言,AV提供有限的编解码器集合,只提供苹果公司认定的最主流的几种媒体类型的支持。对视频文件主要可以归结为H.264Apple ProRes

H.264

H.264规范是Motion Picture Experts Group(MPEG)所定义的MPEG-4的一部分,H.264遵循早期的MPEG-1MPEG-2标准,但在以更低比特率得到更高图片质量方面有了长足进步,使其更好地使用与流媒体文件和移动设备及视频摄像头。

H.264与其他形式的MPEG压缩一样,通过以下两个纬度缩小了视频文件的大小:

帧内压缩,通过消除包含在每个独立视频帧内的色彩及结构中的冗余信息来进行压缩,因此可在不降低图片质量的情况小尽可能缩小尺寸。这类压缩类似JEPG压缩,帧内压缩可以作为有损压缩算法,通常用于对原始图片的一部分进行处理以生成极高质量的照片,通过这一过程创建的帧成为I-frames

帧间压缩,很多帧被组合在一起成为一组图片(简称GOP),对于GOP所存在的时间维度的冗余可以被消除。在一个时间维度上的冗余,如视频的固定背景环境,就可以通过压缩的方式进行消除

GOP中三种不同的帧:

  1. I-frames关键帧,或者单独的帧,包含创建完整图片所需要的所有数据,每个GOP都正好有一个I-Frames。由于它是一个独立帧,其尺寸是最大的,但也是压缩最快的。
  2. P-frames预测帧,是从基于最近I-framesP-frames的可预测的图片进行编码得到的。P-frames可以引用最近的预测帧P-frames或一组I-frames。你将会经常看到被称为“Reference frames”的帧,临近的P-framesB-Frames都可以对其进行引用。
  3. B-frames双向帧,基于使用之前和之后的帧信息进行编码后得到的帧。几乎不需要存储空间,但其解码过程会耗费很长时间,因为它依赖于周围其他的帧。

H.264还支持编码视图,用于确定在整个编码过程中所使用的算法定义三个高级标准:

  1. Baseline:通常用于对移动设备的媒体内容进行处理,提供最低效的压缩,因此经过这个标准压缩后的文件仍较大,但同时这种方法也是最少计算强度的方法,因为它不支持B-frames。如果编译目标是比较久远的iOS设备,可能需要用到Baseline标准。
  2. Main:这个标准的计算强度比Baseline的高,使用的算法更多,但可以达到较高的压缩率
  3. High:高标准的方法会得到最高质量的压缩效果,但它也是三总方法中计算复杂度最高的,因为所有能用到的编码技术和算法几乎都用到了.

Apple ProRes

ProRes编解码器只在OSX上使用,针对iOS进行开发,只能使用H.264

H.264Apple ProRes来说,AV还支持很多摄像头设备的编解码器,如MPEG-1、MPEG-2、MPEG-4、H.263DV,允许用户以多种不同的视频捕捉设备导入内容资源。

音频编解码器

只要是Core Audio框架支持的音频编解码,AV都可以支持。意味着AV可以支持大量不同格式的资源,然而在不适用线性PCM音频的情况下,更多的只能使用AAC

AAC,高级音频编码是H.264标准相应的音频处理方式,目前已成为音频流和下载的音频资源中最主流的编码方式。这种格式比MP3格式有显著的提升,可以在低比特率的前提下提供更高质量的音频,在web上发布和传播的音频格式中最为理想的。AAC没有来自证书和许可方面的限制。

AVCore Audio提供对MP3数据解码的支持,但不支持对齐进行编码。

容器格式

容器格式(container fromat)就是文件类型,或者说文件格式,比如.mov、.mp4、.mpg、avi等。

容器格式被认为是元文件格式,可以将容器格式视为包含一种或者更多种媒体类型(以及描述其内容的元数据)的目录

每种格式都有一个规范用于确定文件的机构,所谓的结构并不仅是其包含的媒体资源技术领域的问题,比如媒体的周期编码时间信息,还定义了默哀属性还原数据,比如电影标题或一首歌的作者信息等。这些元数据可以通过工具进行呈现。

使用AV是,将遇到两种主要的容器格式:

  1. QuickTime,是苹果公式在更宏观QuickTime架构中定义的最常用格式。需阅读文档了解。
  2. MPEG-4MP4容器格式官方文件扩展名是.mp4,也有很多不同的变化扩展名也在使用。

参考

音视频学习从零到整
AV Foundation

上一篇下一篇

猜你喜欢

热点阅读