移动视频编码学习笔记(二)

终于在CentOS下编译完成了FFmpeg,又好几次把系统玩的从崩溃到急救,觉得还是安心先看看入门知识好。于是结合《新一代高效视频编码》与雷霄骅大神的广电小学期视频开始了基础知识的学习。

注:《新一代高效视频编码》全名为《新一代高效视频编码H.265/HEVC: 原理、标准与实现》,作者:万帅 杨付正,电子工业出版社出版,ISBN:978-7-121-24699-9

Overview


  • 什么叫视频编码
  • 视频播放的过程是什么
  • 视频是如何压缩的

1 什么叫视频编码

视频编码(Video Coding)也称视频压缩,其目的是尽可能除去视频数据中的冗余成分,减少表证视频的数据量。
——《新一代高效视频编码》

即使没有接触过真实的视频数据,我们也知道在数据传输过程中去除冗余数据的意义。而在视频原始数据计算中,很多人都喜欢举这样一个例子:
标清720P-RGB-30fps存储的视频,每一秒的数据量计算:分辨率1280×720,每一个色度8位,每秒30帧
传输数据:1280×720×3×8×30=6.64×10^8 bit/s
也就是说标清的视频每秒钟都会消耗大约79M的流量,心疼看直播的同学1s
这么一个简单的计算就可以看出,视频编码是绝对的必要!!一个好的编码方式不但可以让视频体积更小,更是为同等数据量下更加清晰的播放提供可能。

那么问题来了,现在的视频是如何压缩的呢?

2 视频播放的过程是什么

想要知道视频如何压缩,首先要先了解一下现在的视频是如何播放的。当我们拿到一份视频的数据时,首先要做的就是解封装格式,然后音视频分别进行解码,最后将数据同步后分别送给显卡和声卡。

移动视频编码学习笔记(二)_第1张图片
视频播放流程 -图自:雷霄骅广电小学期课件

2.1 封装格式

所谓的封装格式实际上就是我们平时熟知的flv、mkv、mp4、avi等,他们并不是编码格式,而是一种多媒体容器格式。而所谓容器,其实就是我们组织数据的一种方式。

常见的多媒体容器格式

  1. 面向存储:avi、asf(wma/wmv)、mp4、mkv、rmvb(rm/ra)...
  2. 面向流媒体:flv、ts
    参考自博客—— Tocy-多媒体容器格式概述①

面向存储的格式主要是为了便于存储视频数据,而面向流媒体的视频格式主要是便于与各种协议配合传输视频数据,其中flv与ts两种格式基本代表了两种派别:

  • TS格式的存储
    TS格式将视频数据信息分成了若干个TS Packet,他的信息流没有固定的首部或尾部,若是中间视频信息出现丢失只会有丢帧,但是可以继续播放。


    TS数据形式 -图自:雷霄骅广电小学期课件
  • FLV格式的存储
    FLV格式将视频信息分成了若干个Tag,与TS最大的区别就是有了固定的首部,首部中记录了文件的全局信息,每一个Tag还有自己对应的局部信息,当有任何一部分缺失时都会导致整个文件损坏。


    FLV格式存储 -图自:雷霄骅广电小学期课件

2.2 编码格式

视频编码不同于格式封装,这一步主要是将视频的像素数据压缩成为视频码流,期间将冗余的数据成份尽可能去除,从而降低视频的数据量。


移动视频编码学习笔记(二)_第2张图片
常见的视频编码方式 -图自:雷霄骅广电小学期课件

说了这么多格式,视频具体是如何压缩的呢?

3 视频是如何压缩的

视频压缩主要是去除数据中冗余的部分,以AVS为例对视频数据的处理分为四部分:

  • 预测:利用数据的局部性原理(在空间和时间上有很强相关性)压缩数据。
  • 变换:将空域信号变成频域信号。(参考解释:时域,空域,频域的基本概念)
  • 熵编码:利用低频长码的原理去除信源符号的表达冗余。
  • 环路滤波:重建图像经过滤波后用做参考,主要是提高编码质量。

可参考论文《AVS视频编码标准技术回顾及最新进展》

具体的实现细节还需要慢慢学习(很长的路....)这里先记录一点点小的收获吧:

3.1 YUV与RGB

文章最开始使用RGB计算出的惊人数字相信大家还有印象,RGB本来是工业界的一种色彩标准,后在图像存储时通过记录红(R)绿(G)蓝(B)三种颜色通道的值来高度还原色彩。但人类对世界的视觉感知主要依靠视网膜上两种感光细胞——杆状细胞Rods、锥状细胞Cones,两种细胞分别对光强敏感和波长敏感,所以对图像的描述也可以通过亮度-色差的方式来进行表示。

这样有什么好处呢~
首先这样的方式下表现灰度图像会非常地方便(只要亮度就行),很好的兼容了灰度图像。
其次,研究表明人眼对亮度的敏感要强于对色度的敏感,所以在描述完亮度之后色度稍微压缩一下也不会有很大影响,可以很好地对图像进行压缩。

当然,两种方式的存储格式也不相同:

移动视频编码学习笔记(二)_第3张图片
RGB存储 -图自:雷霄骅广电小学期课件
移动视频编码学习笔记(二)_第4张图片
YUV存储(4:2:2) -图自:雷霄骅广电小学期课件

而我们YUV存储的“偷懒”方式也有很多种,不过主要压缩的都是UV采样:

移动视频编码学习笔记(二)_第5张图片
YUV取样方式

〇-Y采样点 ✙-UV采样点,左上 4:4:4 右上 4:2:2 左下 4:1:1 右下 4:2:0

3.2 H.264一角

H.264数据由大小不定的NALU构成,一般情况下每一个NALU存储一帧编码后的数据


H.264存储 -图自:雷霄骅广电小学期课件

其存储又分为I、P、B三种帧,其中I帧记录对图像整体的感知,P帧则记录帧间的变化矢量,B帧则使用于记录P帧的变化信息,通过三种帧的选择使用及相互配合可以极大地消除视频图像中的相关性,达到压缩编码的目的。

移动视频编码学习笔记(二)_第6张图片
图像分割及IPB帧存储情况 -图自:雷霄骅广电小学期课件

其中红色为I帧、蓝色为P帧、绿色为B帧,左上图中红色线条即为当前P帧记录的变化矢量

> 一周目学习结语

我们对太多知识的认知依然只是浮于水面,偶尔看到冰山一角便欢呼雀跃。视频编码是一个完整的体系,这里面有太多新的思想、新的方法,仅仅是匆匆一瞥,也能感受到他庞大的身躯下潜藏的巨大能量。一周目的学习让我对视频二字有了一种难以言述的新鲜情感。
哈哈,视频编码,我来了。

你可能感兴趣的:(移动视频编码学习笔记(二))