超级详细解析(深度剖析基础知识)(1)

“随着技术的不断进步,视频技术的制作加工门槛逐渐降低,信息资源的不断增长,同时由于视频信息内容更加丰富完整的先天优势,在近年来已经逐渐成为主流。在基础知识(1)里面已经讲了模拟时代和数字化时代的视频技术。接下来将对视频编码与压缩、画面压缩、运动压缩、互联网视频应用的到来做一个详细的介绍。”

视频编码与压缩

视频编码与压缩,是数字化视频非常重要的技术,以至于它直接影响到视频在各个领域的应用。如果没有视频编码技术的不断提高,我们今天也不可能在方方面面享受到视频的便利性。

首先,视频编码是一项非常复杂的工程,远超过对音频和图像压缩的难度。其次,视频编码是一个多级压缩的过程,而非单一压缩方案。当然如果不是有着这么复杂的一项工程,视频文件远比我们想象的要大的多。我们来举一个例子:

按照CCIR 601的视频信号采集标准,一个标准PAL制式电视信号转换成数字信号,按照常见的非专业级采样标准4:2:0(你想支持更高的也不行啊,民用级的设备做不到更高的采样率),则每秒钟产生的视频内容所生成的数字文件为21MB。那么1分钟的视频文件有多大呢?1260MB那么大。

那么,如果按照RGB色彩表达方式,720×576分辨率,每个采样点3个基色,每个基色是8bit数据,每秒25帧画面。经过简单的计算,我们很容易得出结果是720×576×3×8×25=237.3Mbit=29.67MByte。那么1分钟的视频就是1780MB。我想从没有用户见到过1分钟的视频会生成这么大的文件吧。这还仅仅是标清,如果是高清1080P的话,那就是69.5TB!

从上面的例子可以看出,即便是不压缩视频,采用YUV颜色来存储信息,比起使用RGB颜色来存储信息,容量还是要小一些的。所以也可以说YUV颜色方式算是视频编码的最初一级压缩方法。

这里面需要穿插一个话题,关于色阶。

色阶的意思,就是颜色从无到最大时,中间的过渡梯级有多少。假如说亮度的黑白信号,色阶为2时,那么它就只有两种颜色,全白和全黑。那如果变为256级是(比较常见的色阶标准),结果就是下面这样:

超级详细解析(深度剖析基础知识)(2)

同样的RGB三基色中,每种颜色都有色阶。8bit数据能够存储256个色阶,那么RGB三基色就可以实现1677万种颜色,也就是24位色。

注:计算机颜色体系中有32位色,实际上是24位色之外增加了一个8位的Alpha透明层,所以也叫RGBA。

那能不能使用更高的色阶呢?大于256级色阶好不好?当然好了,不过一般的显示器不支持。但是的确是有高色阶的显示器,目前色阶最高的显示器可以支持10bit颜色信息,也就是1024级色阶。当然价格是不可想象的!

超级详细解析(深度剖析基础知识)(3)

EIZO GX540医学显示器,1024级色阶黑白显示器 价格不明,但不会少于10万元

超级详细解析(深度剖析基础知识)(4)

SONY BVM-X300主控监视器,OLED显示10bit彩色 可以显示10亿种颜色

还有得告诉大家一个不好的消息,一般民用的低端显示器采用的TN型液晶面板,都是6bit的,也就是RGB每种颜色只有64级,一共可以显示颜色只有26万种。当然你可以选择32位色模式,只不过它的1677万种颜色,是通过插值换算出来的,并不是真正的1677万种颜色。真正支持1677万种颜色的显示器,其实也不是很便宜的。

画面压缩

如果每一帧的视频画面,按照RGB颜色保存的话,文件会非常大。例如PAL制视频画面所产生的文件有1.2MB。

如果将每帧的视频画面压缩,那么可能大大减小视频的文件大小。而我们所知的最常见图像压缩算法就是jpeg。JPEG 是Joint Photographic Experts Group(联合图像专家小组)的缩写,是第一个国际图像压缩标准。

首先JPEG压缩是对图像的YUV色彩分量进行分别编码,所用的编码主要算法是DCT(DCT for Discrete Cosine Transform,离散余弦变换)。它是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(DFT for Discrete Fourier Transform),但是只使用实数。DCT是一种非常高压缩率低失真的压缩算法,可以将图像压缩至1/5到1/10大小,而且画质基本没有太大变化。

那么利用JPEG压缩算法,原本每帧图像大小为1.2MB,现在就变成了180KB左右,减小了很多。而每秒钟的视频大小就变成了4.4MB,1分钟的视频就是263MB。顿时小了很多。使用这种算法的视频编码方式叫做Motion JPEG,也叫MJPEG。注意,视频压缩里面也有个比较知名的方法叫做MPEG,但不等同于MJPEG,两者截然不同。

运动压缩

虽然通过JPEG算法,可以将视频变小了好几倍,但是还是比较大。对于传输来说和存储来说,门槛还是太高了,只能适合像广播电视行业这种专业机构使用。

那么还有什么办法可以把视频文件压缩的更小呢?那就是帧间压缩方法。

说到帧间压缩,那必须提到一个组织,MPEG(Moving Picture Experts Group,动态图像专家组)是ISO(International Standardization Organization,国际标准化组织)与IEC(International Electrotechnical Commission,国际电工委员会)于1988年成立的专门针对运动图像和语音压缩制定国际标准的组织。

现在知道了吧,MPEG其实是一个组织的名字。当然这个组织有很多有代表性的压缩算法,都是以MPEG-X命名的。所以大家也就习惯的把MPEG称作压缩方法。

首先,运动压缩采用的是帧间压缩法。而什么是帧间压缩法呢?

由于视频是由很多帧的画面集合组成,而鉴于运动的特性,在很短的间隔时间内运动幅度很小。另外就是运动的画面中,存在很多并没有运动的画面信息。甚至有时候拍摄的画面有很多帧图像之间几乎没有变化。这样重复的记录这些没有变化的图像信息,简直是太浪费了。

帧间压缩,就是尽可能的剔除那些相邻画面中没有变化的内容信息。举个例子,比如画面是一个人骑自行车,背景不变,而骑自行车的人从画面一端跑到另外一端。那么这个时候,就可以把没有遮盖到的背景部分,只保存一份就行了。剩下的只是记录人骑自行车的整个动态画面就OK。

当时原理上比较简单,实现起来就比较困难了。帧间压缩的时候首先要用到关键帧和非关键帧的概念。关键帧就是指你要保存画面上所有数据的那一帧图像,并且以这个图像作为参考。关键帧后面每一帧都会比照关键帧和此前一帧的画面,记录画面改变的地方,去掉重复的信息。

早期的压缩算法就是采取这种策略,比如MPEG-1。它的应用产品大家可能更熟悉——VCD。

这里顺便提一下MP3,MP3的全名叫做MPEG-1 layer3。也就是说MP3压缩格式是MPEG-1压缩标准里面的一个子集。跟MP4是完全不同的概念。

VCD虽然在一张光盘里(650MB容量)可以放得下差不多一部电影的长度,已经是压缩率很惊人了。当然这也是牺牲画面为前提的:

有了VCD产品,国人们是皆大欢喜。这里可以顺带讲一下,VCD机是中国人发明的,那家公司叫万燕。但是呢,VCD技术是飞利浦、SONY、松下、JVC等公司联合制定的标准,而生产VCD芯片的公司是美国的C-CUBE公司。怎么说呢,技术虽然是老外们发明的,不过他们并不看重这项技术,所以就没形成产品。反倒是国人把它发扬光大了。

与此同时,欧美国家其实对VCD是不太感冒的。因为他们还在VHS时代(感兴趣的同学可以搜索一下VHS,以及SONY的betacam与JVC的VHS制式标准大战),而且VCD第一不便宜,第二画质也不高,第三还不能录像只能播放。

其实有了VCD产品之后,对世界还是很震惊的。大家都觉得把一部电影放在一张小小的碟片里面真的很方便。但是VCD画质真的不好,有没有什么新的技术可以做到更小的容量更高的清晰度呢?那就是后来推出的MPEG-2。

MPEG-2这个标准是最早风靡全球的压缩技术,标准制定的时间是1994年(VCD标准是1993年)。虽然已经过去20多年了,却仍然是当今最重要的视频压缩格式之一。除了还有大量的DVD产品以外,更重要的是目前广播电视领域的数字电视DVB-T标准,仍然使用的是MPEG-2压缩标准(在中国)。

MPEG-2相对于MPEG-1有什么提升呢?

1. 画面有了很大的提升,且更加灵活了。MPEG-1几乎所有的应用都集中在VCD上,分辨率很小,且不能改变。MPEG-2可以适合中等清晰度(D1标准、PAL制或者NTSC等制式电视标准)到高清晰度视频内容的展示。也就是说即便是720P、1080P等这样的高分辨率视频,MPEG-2仍然适用。

2. 增加了GOP模式,使用IBP帧结构。原来的帧间压缩方式,在大动态场景下马赛克很严重。到了MPEG-2之后就有了很大的提升,因为使用了参考帧B帧,使用了向前预测帧方式,而且压缩率是可变的。总的来说,就是大动态时候不会有马赛克了。

3. 增加了很多额外的信息,功能更加强大。比如支持更强的交互与命令控制(大家有没有想起来VCD 2.0时候画面有菜单可以选,DVD比这个强大),支持传输流形式(TS,TransportStream,就是可以用于直播,也不怕文件损坏就全完),多音轨而且多声道。

但是MPEG-2也有不足的,主要就是它是面向工业化视频信息生产发行领域的,也就是说只适合电视台、DVD发行商、卫星通信等领域,不适合民用。因为码流真的很大,比MPEG-1要大。虽然一张光盘就可以装的下一整部电影,那是因为光盘的容量从650MB提升到了4.3GB,甚至7.2GB。

互联网视频应用的到来

早期的宽带速度只有1~2Mbps(56K modem和ISDN时代根本就没视频什么事),想要在线播放DVD影片是不可能的(至少5~10Mbps),VCD也不行而且技术上不支持。MPEG组织的科学家就开始研究能够适合在网络上播放的视频压缩方法,也就是后面推出的MPEG-4压缩格式。

MPEG-4很明显的特征就是适合在网络上播放,灵活度更高,功能更加强大:

MPEG-4后来产生了很多衍生压缩算法,比较著名的就是Xvid和Dvix了。其实MPEG-4的知名度不如Xvid和Dvix,因为在那个时期,MPEG-4为了适应互联网较低的带宽速度,大部分应用都是一些低分辨率低码流的视频。而Xvid和Dvix虽然源自MPEG-4体系,但是面向视频文件存档进行了优化,可以比DVD小3~4倍的大小,存储与DVD画质非常接近的视频内容。受到了用户的极大喜爱,以至于在那个时期已经成为盗版影片的必选格式。

超级详细解析(深度剖析基础知识)(5)

超级详细解析(深度剖析基础知识)(6)

RealMedia——曾经的王者

曾经互联网视频最大的赢家是Real Network,也是它最早实现了基于互联网的流媒体视频(在线观看)。想当年还在56K Modem窄带时期,Real Network公司就已经提供了视频在线观看功能。笔者曾经在那个还在PSTN上进行拨号的时代,体验过通过realplayer观看NBA的直播。如果以现在的标准来衡量那个时期的产品,那就是延时巨大(经常要loading几分钟)、画质惨不忍睹(分辨率超低,马赛克严重)、经常性的卡顿。

但是随着宽带的逐渐普及,RealMedia的巨大优势得以施展。在那个时期,RealMedia是当之无愧的王者。

超级详细解析(深度剖析基础知识)(7)

首先,RealMedia压缩标准并非是MPEG-4衍生的版本,而是一个私有的压缩标准。这个标准由Real Network公司创立,且独有。RealMedia拥有极大的压缩比,远超MPEG家族。比如说一部标准DVD格式的电影,大约4.3GB容量,如果采用Dvix压缩的话,大概能压缩到700MB,而使用RM格式压缩,连700MB的一半都不到。即便是到了后期的RMVB压缩格式,也基本不会超500MB。

第二,Real Network公司在当时提供了世界上最完善的流媒体系统方案,只不过是收费的。那个时候的竞争对手只有微软的Windows Media Encoder,免费但是功能不完善。而RealMedia Encoder提供了VOD模式和LIVE模式完整的流媒体解决方案,虽然比较贵(印象中大概1万多美金)。

超级详细解析(深度剖析基础知识)(8)

对于商业化应用的企业而言,要想做直播和点播业务,自然RealMedia Encoder服务会更加靠谱。虽然是收费的,但是系统稳定、可靠性强、又有服务支持(Windows Media Encoder只能在MSDN社区寻求帮助,没有技术支持)。所以说那个时期Real公司已经处于垄断地位了。

不过在那个时期,Real公司面临最大的问题是盗版。因为RealMedia的播放器虽然是免费的,但是编码器、解码器、流媒体服务器等等都是收费的。随着real格式日渐盛行,盗版就变得非常猖獗。当然Real公司没有微软那么财大气粗,所以自然要到处封杀。这只能说是在21世纪初期的互联网现状,如果要是放到现在,像Real这种公司风投还不挤破大门?公司的估值少说也得几百亿美金吧。

可惜的是,由于封闭而且收费,加上到处封杀,给了竞争对手很多机会。然后就有了Flash流媒体的崛起。

RealMedia能强大到什么程度呢?在21世纪初一直到2010年之前的差不多十年间,real格式一度成为了互联网视频格式的几乎唯一选择。那时候几乎所有盗版的电影和视频文件,全都是基于RM和RMVB格式的。21世纪以前呢?那是avi的天下,科科。

RealMedia的视频压缩主要分为两个阶段,第一阶段就是RM格式,第二阶段是RMVB。由于RM格式虽然压缩率出奇的高,但带来的问题就是画质很差,马赛克严重。随着宽带逐渐普及,人们对画质的要求逐渐提高,加上竞争对手的压力(Dvix和Xvid),RM升级到了RMVB。多出来“VB”这两个字幕,其实指的就是“Variable Bitrate”动态码率或者叫可变码率。关于码率的解释我们在文章最后来做。

超级详细解析(深度剖析基础知识)(9)

RM升级到RMVB之后,一直被诟病的画质问题得到了提升,同时也可以支持较高的清晰度(最大到720P)。但是RMVB推出的时间已经晚于竞争对手,加上商业化的原因,以及更新速度越来越慢。最终消失在互联网的视野中。

Flash Video的崛起

不同于RealMedia的全行业流行,Flash Video(以下简称FLV)主要应用在流媒体领域,提供VOD点播和LIVE直播服务。与Dvix和Xvid一起成为了第二阶段的黄金组合。

超级详细解析(深度剖析基础知识)(10)

FLV的压缩编码也不是源自MPEG-4,而是另外一个强大的标准H.26x体系,最早出现在1997年的MacWorld Expo大会上。说来很有意思,FLV天生就和苹果是一对,到最后却被苹果抛弃。

首先,FLV并非是一种压缩编码格式,而是封包格式(比如AVI、MKV、MP4、MOV这些文件,都是一种封包格式。关于封包格式的问题,由于涉及技术过深,在这里暂不作详解。感兴趣的用户可以自己了解掌握,@我也行哦)。FLV采用的视频压缩编码其实有蛮多的,开始是Sorenson Video和Sorenson Video Pro,以及Sonrenson Spark;后来加入了Sorenson MPEG 1/2/4,再后来就是目前最流行的H.264。

其实早期Sonrenson的很多压缩编码格式源自QuickTime压缩编码,也是基于H.263的压缩编码应用。所以我们就不单独介绍这种编码的特点了。

至于FLV在市场上的表现,其实大部分人都可能比较了解。毕竟国内的视频大站,比如优酷土豆、酷6、PPS、PPTV等,早期全都是用的FLV;国外的大站如youtube也是最早的FLV用户。只是随着苹果公司倡导的全面去flash化运动,所有视频大站不得不开始往HTML5转型。

Windows Media Video

WMV一直是一种不温不火的压缩编码格式,出道很早,但应用很少。早在RealMedia时期,微软就已经推出了WMV压缩格式。并可以配合Windows Media Encoder实现流媒体应用,也可以单独编码以文件形式存储。可以说路数跟Real公司一样,只不过是免费的。

超级详细解析(深度剖析基础知识)(11)

其实Windows Media Encoder(以下简称WME)一直都没有什么起色,属于那种历史悠久但无人知晓的品种。早期在跟RealMedia竞争中处于下风,但至少有不少用户知道。后来有了FLV之后,基本就看不到WME的身影了。

至于WMV的压缩格式,最开始也是一种私有格式。只不过到了WMV 9.0的时候,微软向SMPTE学会提交的标准化方案,并入到了VC-1标准体系中。也就是其他家也可以共享这种编码技术。

在早期的WMV标准里面,比如WMV 7.0,是基于MPEG-4 part2实现的编码算法。最早期的版本没有资料,但是可以看得出,WMV主流的版本主要是基于MPEG-4编码的。

H.26x家族

除了知名度很高的MPEG组织(隶属于ISO国际标准化组织下面的部门),还有一个在视频编码压缩领域有突出贡献的组织,那就是VCEG(Video Coding Experts Group,视频编码专家组)。VCEG属于另外一个非常厉害的组织ITU(国际电信联盟)下属的部门,可能大部分人都不知道这个名字,但你一定知道他们提供的标准——H.264。

VCEG组织主要编撰的是H.26x标准体系,主要有H.261,H.263,H.264。

H.261主要是面向视频会议领域的,也主要应用在监控安防领域。前面曾讲到的,都是低分辨率低码流视频。

H.263 算是H.261的加强版本,主要是支持更高的分辨率(16CIF),采用了更高级的运动补偿算法。后期又升级到了H.263 和H.263 ,使得算法性能和分辨率等都有了明显的提升。

除了知名度很高的H.264以外,还有一个H.262标准,只不过应用非常少,就不讲了。

H.264、MPEG-4 part10 AVC

超级详细解析(深度剖析基础知识)(12)

目前大家最熟悉的压缩编码格式莫过于H.264了,其实它还有另外一个名称MPEG-4 part10 AVC。

原因是这个标准不是一家制定的,而是两家世界上最权威的编码专家组织一同来完成的。那就是ITU下面的VCEG组织和ISO下面的MPEG组织。大家有兴趣的话,可以搜索一下ITU,就知道它在世界标准体系里面的重要性了。目前全世界的通信网络标准,比如2G的GSM、3G的WCDMA、TD-SCDMA、CDMA2000,以及4G的FDD-LTE和TDD-LTE都是ITU来发布的。

H.264/MPEG-4 AVC是融合了两家权威组织的知识结晶,是目前世界上最优秀的编码算法。它的特点非常多,我只列举一下大家能感知到的一些特点。更多的内容大家可以自行查阅资料。

大家可能都知道的一个道理,当压缩率越高的时候(同等画质下),编码就越复杂,计算量越高。对H.264的编码和解码,其计算量比过去的MPEG-2、MPEG-4等都高了很多。所以也就会出现较早期的电脑在软解码(CPU解码)H.264视频的时候,容易出现卡顿。就是因为对计算性能要求较高。

但是好在有大量的专用编码解码芯片,以及专门对H.264编解码优化过的GPU(手机GPU和电脑显卡GPU),使得流畅性和速度得到了保障。所以你会发现某些高画质的视频,可能在电脑上播放会很卡,但是在一些机顶盒上播放会非常流畅。

H.265

超级详细解析(深度剖析基础知识)(13)

其实在H.264还没流行起来,H.265标准就已经建立了。主要特点是压缩效率进一步提升,对UHDTV的支持,更好的信噪比等等。

目前已经有一部分手机、监控安防设备、视频会议设备开始使用H.265编码格式。预计以后会更多,并且逐渐普及。

QuickTime家族

超级详细解析(深度剖析基础知识)(14)

说起QuickTime,大家一定会想起苹果公司。没错,quicktime就是苹果公司推出的一整套编码、解码、播放和流媒体解决方案。quicktime的压缩格式早期是私有的,由于早期MAC系列电脑(那时候没有iphone)普及率很低,所以使用quicktime这种格式的非常少,包括他们的流媒体应用。

只是到了后期,随着iphone的大量用户,quicktime才被大家所知。但这个时候苹果早就将quicktime标准加入到了MPEG-4标准体系中,以及后来H.264出现。结果大家都清楚了,苹果目前也在用H.264压缩标准。

压缩编码全集

其实除了上面讲到的主流非主流的视频压缩编码格式以外,还有很多大家不了解的。因为应用非常少,且现在几乎都是被H.264统一了市场,所以就不做介绍了。下面的表格是目前所有的视频压缩编码标准集合:

超级详细解析(深度剖析基础知识)(15)

关于码流的详解

简单的说码流就是视频每秒大概产生多大的视频文件,一般以bps(bit per second每秒产生比特数)为单位。其中b代表bit(比特),跟B容易混淆。其实B代表Byte,意为“字节”。1Byte字节=8bit比特。一般存储文件时,通常用B表示;传输文件时,为了表达速度时一般用b表示。

码流常用于视频传输时标记视频属性的,这是因为流媒体,尤其是直播体系中,文件的大小没有太多意义。因为观众可能是随时进来观看的,那么一直等到他观看结束后,才能获取到视频文件的大小。还有一点就是TS流文件不需要从开始读取,它本身就没有文件头尾的概念,可以从任何一个片段开始读取。所以这时候文件大小的意义也不大。

那么为了准确评估视频,需要用到码流这个参数。因为码流代表你每秒需要传输的数据量,需要与你的网络进行匹配。假如你的网络带宽是2Mbps,这代表理想状态下。那么如果你播放码率为1.5Mbps(约等于1500Kbps)的流媒体视频,就很可能会卡顿。主要原因是网络QOS(Quality of Service,服务质量)的问题,它无法保证数据一直都能以最高速度传输,毕竟网络环境很复杂。

在早期的时候,压缩编码标准都采用的是恒定码流编码形式(CBR模式),即每秒钟产生的视频文件大小是完全一样的。例如MPEG-1的码流就是1.5Mbps,那么60分钟的视频产生的文件就是675MB,正好一张VCD光盘的容量。

等到了MPEG-4时代,由于网络环境的复杂性,如果采用恒定码流的策略,在网络速度突然变差的时候,视频就容易卡顿。另外就是视频画面里面如果有存在大动态场景的时候,原先的码流可能会引起画质变差,需要临时降低一下压缩率。所以根据这两种情况的应用,在流媒体直播编码和视频压缩编码时根据实际情况可以采取不同的码流。所以就产生了可变码流编码形式(VBR模式)。

在进行VBR编码时,为了充分提高压缩编码率,可以采用2次压缩法,也就是2pass。但是2次压缩法会大大降低压缩的速度,虽然视频码流更低画质更好,但编码时间也大大拉长。

END

超级详细解析(深度剖析基础知识)(16)

小贴士

老司机带你了解一下常见的电影文件信息及特点

现在很多电影的文件看起来都比较长,大家不一定能够理解。例如下面的:

Children.Of.Man.2006.BDRE.1080p.x264.AC3-SiLUHD.mkv

对于这样的文件名称,需要拆分开来看。

l 刚开始肯定是影片或电视剧名称,但有时候后面会有一些后缀来表示版本的特殊性,比如Director’s表示导演剪辑版、Unrated表示未分级版、Limited表示有限放映版本;

l 第二部分是发行年份,比如上面的2006;

l 第三部分是视频来源,比如上面的BDRE,表示是来自于蓝光盘(BD)进行了重编码。同样的表示方法还有HDrip表示从HD-DVD重新压制、HR-HDTV表示从高清电视信号重新压制、还有TVrip等。另外有些标识为CAM表示从电影院用摄像机偷拍的、TS表示虽然在电影用摄像机偷拍,但是音频用的是影院提供的音频输出所以音频没有影院的干扰、TC表示直接从胶片上专制拷贝的(没有数字化处理过,亮度不行,画质很一般);

l 第四部分是当前视频的分辨率,很明显上面的1080P代表就是1920×1080分辨率,逐行扫描;

l 第五部分是当前视频使用的压缩格式,上面的X264表示使用X264编码器压缩的,另外还有些Xvid等等都表示用的编码器。比较特殊的是REMUX代表从高清光盘(BD或HD-DVD)中直接提取视频数据重新封装(没有做重编码)。画质最高,但一般文件也会非常大;

l 第六部分是当前影片音频的压缩编码格式,常见的有DTS、AC3、DD5.1、AAC、LPCM、MP3。当然有些使用了次世代高清音频格式,比如DTSHD,TrueHD;

l 横线之后的表示是压制小组的名称。

有没有get新技能!比心!

,