关于数字媒体的压缩

  为缩小数字媒体的文件大小,我们需要对其进行压缩。一般来说我们所接触的媒体内容都需要进行一定程度的压缩,也就是说我们都是在和这些内容的原始文件的压缩格式在打交道。压缩技术可以大幅缩小缩小媒体文件的尺寸,但是通常会在资源的质量上有一定程度的衰减。

色彩二次抽样

  视频数据是使用称之为 YUV 颜色模式的典型案例。不过大部分软件开发者都更熟悉的是 RGB 颜色模式,即每个像素都是由红、绿、蓝三个颜色组合而成的。YUV 则使用色彩(颜色)通道 UV 替换了像素的亮度通道 Y(亮度)。下图展示图片分离亮度和色彩通道后的结果。
在这里插入图片描述
左侧为原始图片,中间为亮度(Y)图片,右侧为色彩(UV)图片。[图片来源《Learning AV Foundation》]
  由上图可见,图片的细节都保存在亮度通道中,如果去除亮度,就只剩下了灰度图片,而整合的色彩通道中几乎丢掉了全部细节。这是由于我们的眼睛对亮度的敏感要高于颜色。所以可以通过大幅减少存储在每个像素中的颜色信息,而不至于使图片的质量严重受损。这个减少颜色数据的过程就称之为二次抽样
  在摄像头规范或者音视频设备的软硬件中提到的 4:4:4、4:2:2 及 4:2:0 的含义就是指的相应的二次抽样参数。根据这些值按如下格式将亮度比例表示为色度值,这个格式写作 J🅰️b,具体含义如下:
* J:几个关联色块(一般是4个)中所包含的像素数。
* a:用来保存位于第一行中每个 J 像素的附加像素个数。
* b:用来保存位于第二行中每个 J 像素的附加像素个数。
  为了维持图片质量,每个像素点都需要有各自的亮度值,却不一定需要色度值。下图展示了几个常见的二次抽样效果:
在这里插入图片描述
  在每种格式下像素的亮度信息都被完整保存,但是不同的格式下彩色信息却不同:

  • 4:4:4:全彩色信息
  • 4:2:2:色彩信息为每两个水平像素的平均值,即亮度和色度比率为2:1
  • 4:2:0:色彩信息为水平和垂直两个方向四个像素的平均值,亮度和色度的比率为4:1
      色彩二次抽样一般发生在取样时

编解码器压缩

  对于大部分的音频和视频来说都是使用编解码器(codec)来压缩的,编解码器使用高级压缩算法对需要保存或发送的音频或视频数据进行压缩和编码,同时还可以将压缩文件解码成适合播放和编辑的媒体资源文件。
  编解码既可以进行无损压缩也可以进行有损压缩,无损压缩编解码器以一种可以完美重构解码的方式对媒体文件进行压缩,常用的 zip 就是这种方式压缩。有损编解码器顾名思义就是在压缩过程中会损失部分数据。编解码器为这一形式的压缩使用基于人类可干支的高级压缩算法。例如即使人类可以理论上听到介于 20Hz 和 20kHz 之间的声音,但我们可能真正敏感的频率区间只是 1kHz 到 5kHz。所以可以在音频文件中使用过滤技术来减少或消除特定频率。这只是众多方法中的一个,但有损压缩的目的是使用 psycho-acoustic 或 psycho-visual 模式作为一种方法来减少媒体内容的冗余数据,这样会使原文件质量的损耗达到最小。

视频编解码器

  对于视频而言,AVFoundation 提供了优先的编解码集合,只提供苹果公司认定的目前最主流的几种媒体类型的支持。具体对于视频文件来说,主要可归结为 H.264 和 Apple ProRes。

H.264

  当我们需要对发送的视频文件进行编码时,只要是 H.264 的标准文件,AVFoundation 都提供了视频编解码的支持,而且行业内也默认对该编解码器进行了整合,这个标准广泛用于消费者视频摄像头捕捉到的资源并成为网页流媒体对视频所使用的的最主要的格式。H.264 的规范是 Motion Picture Experts Group(MPEG)所定义的 MPEG-4 的一部分,与其他形式的 MPEG 压缩一样,H.264 通过两个维度来缩小视频文件的尺寸:

  • 空间:压缩独立视频帧,被称为帧内压缩
  • 时间:通过以组为单位的视频帧压缩冗余数据,这一过程被称为帧间压缩

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

  • Baseline:这个标准通常用于对移动设备的媒体内容进行处理,提供了最低效的压缩,因此经过这个标准压缩后的文件仍比较大,但是也是最少计算强度的方法。
  • Main:这个标准的强度要比 Baseline 的高,因为它使用的算法更多,可以达到比较高的压缩率。
  • High:这个标准会得到最高质量的压缩效果,但也是 3 种方法中计算复杂度最高的。

Apple ProRes

  Apple ProRes 被认为是一个中间件或中间层编解码器,因为它的目的是为专业编辑和生产工作流服务。Apple ProRes 的编解码器是独立于帧的,意味着只有 I-frames 可以被使用,这就使其更适合用在内容编辑上。此外 Apple ProRes 还使用可变比特率编码的方式来对复杂场景中的每一帧进行编码。
  ProRes 是有损编解码器,但是具有最高的编解码质量。
  ProRes 只能在 OS X 上使用,如果只针对 iOS 进行开发工作,则只能使用 H.264。但是苹果公司提供了一种方法,当我们捕捉图像的目的是对其进行编辑时,可以将目标换成通用的 H.264编码格式,被称为 iFrame。

音频编解码器

  AVFoundation 支持所有 Core Audio 框架所支持的频频编码,这意味着 AVFoundation 能够支持大量不同格式的资源。但是在不用线性 OCM 音频的情况下,更多的只能使用 AAC。
  高级音频编码(AAC)是 H.264 标准相应的音频处理方式,目前已成为音频流和下载的音频资源中最主要的编码方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值