音视频

音视频开发基础理论-视频篇

2022-12-29  本文已影响0人  _小沫
11

上篇:
音视频开发基础理论-音频篇


带着这些疑问,我们一起来看看视频相关的知识;

颜色

颜色是通过眼、脑和我们的生活经验所产生的一种对光的视觉效应
颜色就是人对光的一种感觉,由大脑产生的一种感觉

人类肉眼由视锥细胞及视杆细胞组成,它们共同影响眼睛对不同频率的光的感知程度的不同,对不同亮度的感知程度的不同;

自然界中的任一颜色都可以由红,绿,蓝 这3 种颜色值之和来确定,这即是三原色,可以选择不同的三原色构造不同的颜色空间。

颜色模型

选定三原色,并且对三原色进行量化,那就可以将人的颜色知觉量化为数字信号;

常见的颜色模型:

YUV详解

黑白电视的时候,基本上只需要一路信号就可以还原图像(亮度)。但是有了彩色之后,一路信号无法表达一副完整的彩色图像(亮度+色度);
彩色电视出现之后,为了兼容早期的黑白电视信号(也就是黑白电视机可以接收彩色信号,但是只显示黑白),科学家引入了YUV色彩表示法。

现在通常说的YUV指的是YCbCr:
其中Y与YUV 中的Y含义一致,Cb , Cr同样都指色彩,只是在表示方法上不同而已,Cb Cr 就是本来理论上的“分量/色差”的标识。C代表分量(是component的缩写),Cr、Cb分别对应r(红)、b(蓝)分量信号,Y除了g(绿)分量信号,还叠加了亮度信号。

YUV的诞生一开始是考虑到黑白电视兼容,但是目前黑白电视基本淘汰,YUV色彩何以延续至今呢?
最主要的原因不是因为兼容性考虑,而是YUV有个巨大的优势,就是节省带宽。这在数字媒体领域是很重要的。
对比RGB,使用YUV一个像素可以减小至平均只占用12bit(1.5字节);体积是RGB888的一半;
在体积减少的情况,给与人肉眼的感觉其实区别并不大;
这是由于人类视网膜上的视杆细胞要多于视锥细胞,视网膜杆细胞的作用就是识别亮度,而视网膜锥细胞的作用就是识别色度。所以人眼对亮度分辨率的敏感度高于对色彩分辨率的敏感度;
YUV颜色模型就是利用这个原理,把亮度与色度分离,根据人眼对亮度更敏感,增加亮度的信号,减少颜色的信号,以此来节省空间,从而适合于图像处理领域。

我们更容易识别去除色彩的图像,而对于单独剥离出的只有色彩的图像,不好识别:

signal Y=0.5时

总结一下YUV的优点:

YUV采样格式

采样格式通常用A:B:C的形式来表示,比如4:4:4、4:2:2、4:2:0等;
其中常用的是4:2:0。

A:一块A*2个像素的概念区域,一般都是4
B:第1行的色度采样数目
C:第2行的色度采样数目
C的值一般要么等于B,要么等于0

yuv 444 420 420

视频相关概念

视频的采样

视频最早是由摄像机拍摄制作而成的;
现实中摄像机的成像原理都是基于小孔成像为基础的。
我们知道,光在同一均匀介质中、不受引力作用干扰的情况下,沿直线传播;因此它在遇到阻隔物上的孔洞时会穿过它,并能在孔后一定距离内的对应平面上投射出一个倒立的实影;只要投影面周围的环境足够暗,影像就能被人眼所观看到。
摄像机的基本工作原理就是——将景物影像通过光线的各种传播特性准确地聚焦在具有感光能力的感光器件上;这种感光器件上面覆盖了一层含三基色的马赛克滤镜;一片感光器件来采集三种颜色,感光器件是对光敏感的设备,对于进光三种颜色的强弱可以产生不同的电压;将这些不同的电压记录下来并转换为数字信号(RGB或YUV等表示),在进行压缩存储即得到视频数据;

视频分辨率

分辨率是用于度量图像内数据量多少的一个参数,通常表示成ppi(每英寸像素Pixel per inch), 视频的320X180是指它在横向和纵向上的有效像素

视频分辨率也是数字化视频时代的主要特征,由于模拟视频采用线扫描机制,也就是按行显示图像,而每一行的视频线中并没有进行数字量化,所以模拟视频都是以多少行来界定的。比如PAL制式采用576行,NTSC制式采用480行。

到了数字化时代,为了量化视频的具体信息,就必须对每行的信息进行采样并量化,就形成了分辨率的概念。如果采用PAL制式的视频,每行量化的图像点为768个,那么分辨率就是768×576。也就是说把PAL制的视频图像可以分解为768×576个像素点组成。

在标清电视时代,对于分辨率方面理解与现在其实有所不同。比如SECAM制式每帧图像是625行,但是分辨率是720×576,也就是只有576行。是因为视频信号传输过程中分帧正程和帧逆程,而帧逆程就是回扫,反向回去。在视频信号正常显示时,需要消除行帧逆程扫描对画面的干扰,所以就变成了576行。

到了高清时代,数字电视推出了HDTV标准,它对于显示分辨率的定义为1280×720逐行扫描,也就是俗称的720P;1920×1080隔行扫描,也就是俗称的1080i;1920×1080逐行扫描,也就是所谓的1080P。

当然高清数字电视已经逐渐普及了,目前正在面向4K高清过渡,也就是所谓的UHDTV(Ultra High Definition Television,超高清数字电视)。UHDTV草案定义了两个分辨率标准,及4K(3840×2160)和8K(7680×4320),支持50Hz、60Hz、和59.94Hz三种帧率,只采用逐行扫描。UHDTV采用正交采样,像素纵横比(PAR)为1:1,显示纵横比(DAR)为16:9。

视频编解码

视频编码:

按照YUV色彩表达方式,采样格式4:2:2,720×1280的分辨率,每秒30帧画面的视频。经过简单的计算,1分钟视频大小=720x1280x2x30x60=3G;

可见采集的原始视频信号体积都非常大,如果视频不经过压缩编码的话,占用存储太大不利于保存及传输。
视频编码就是文件当中的视频所采用的压缩算法,视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。

视频解码:

有了编码,当然也需要有解码。
因为压缩(编码)过的内容无法直接使用,使用时必须解压缩,还原为原始的信号(比如视频中某个点的颜色等),这就是“解码“或者”解压缩“。

H.264

目前所有的视频压缩编码格式:

现在几乎都是被H.264统一了市场,因此着重了解下H.264;
H.264(MPEG-4 Part 10,Advanced Video Coding),
是迄今为止视频录制、压缩和分发的最常用格,H.264提供了明显优于以前任何标准的压缩性能。
其编码过程大体可以归纳为以下几个主要步骤:

  1. 划分帧类型
  2. 帧内/帧间编码
  3. 变换 + 量化
  4. 滤波
  5. 熵编码

帧内(Intraframe)编码:当压缩一帧图像时,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息,这实际上与静态图像压缩类似。帧内一般采用有损压缩算法,由于帧内压缩时各个帧之间没有相互关系,所以压缩后的视频数据仍可以以帧为单位进行编辑。帧内压缩一般达不到很高的压缩。

帧间(Interframe)编码:基于许多视频或动画的连续前后两帧具有很大的相关性,或者说前后两帧信息变化很小的特点。也即连续的视频其相邻帧之间具有冗余信息,根据这一特性,压缩相邻帧之间的冗余量就可以进一步提高压缩量,减小压缩比。帧间压缩也称为时间压缩(Temporalcompression),它通过比较时间轴上不同帧之间的数据进行压缩。帧间压缩一般是无损的。帧差值(Frame differencing)算法是一种典型的时间压缩法,它通过比较本帧与相邻帧之间的差异,仅记录本帧与其相邻帧的差值,这样可以大大减少数据量。

具体参考: https://www.cnblogs.com/mjios/p/14768991.html

视频封装格式:

封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。有了封装格式,才能把字幕,配音,音频和视频组合起来。常见的AVI、RMVB、MKV、ASF、WMV、MP4、3GP、FLV等文件都指的是一种封装格式。

流行的封装格式如下所示:

视频播放

播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步;
播放本地文件则不需要解协议,需要经过以下几个步骤:解封装,解码视音频,视音频同步;

上一篇下一篇

猜你喜欢

热点阅读