当前位置:首页 » 其他

为什么对视频进行压缩

2014-08-07 08:57 本站整理 浏览(48)


要实现实时视频通信,除了需比与其它数据通信(语音,非实时视频,数据)更高的带宽外,还需要对视频信号进行较大的压缩。网络带宽正随着无线接入技术和有线传输技术的发展不断提升,但即使这样,如果不对视频信号进行必要的压缩,目前用户的接入带宽也是远远无法满足视频通信的要求。

假设用户接入网带宽为20M(在中国,有这种接入网带宽的用户很少吧?),如果用户想进行实时的视频通信(比如说你想跟外地朋友进行视频聊天),假设你使用的图像分辨率为4CIF(704*576),帧频为25f/s.如果不进行压缩,大概需要多大的带宽呢?
那让我们计算下传输原始信号需要的带宽吧,如果原始图像为4:2:0的YUV格式数据(这个格式已经为原始数据的最小),每幅画面的大小为:704*576*1.5*8 bit = 4.64M,也就是说每一帧为4.64M。如果想看流畅的视频画面,大概每秒需要传输25帧,也即需要4.64*25M = 116M的带宽。CIF(352*288)格式也需要116/4=29M 的带宽。也就是说如果不压缩,20M的接入带宽,连QQ聊天都做不了。你想想QQ聊天的效果有多差?
刚刚计算的是标清分辨率条件下,大家现在不流行说高清,全高清吗,也就是说分辨率为720或者1080。这两种分辨率同样按YUV4:2:0的格式计算,原始数据量就更大了,720P(分辨率为1280*720):1280*720*1.5*8 bit = 10.55M。1080P(分辨率为1920*1080) 1920*1080*1.5*8 bit = 23.73M。要知道这只是一副画面的大小,流畅的视频画面需要大概每秒25帧或以上,也就是说高清720p的视频,原始数据大小为每秒10.55*25 =
263.75M,而1080P每秒数据量为23.73M*25 = 593.25M。这里还都只是算的每秒原始视频数据的数据量,大家再想想,随便一部高清电影,好莱坞大片,怎么也得有两个多小时,原始数据量就是再乘以3600秒*2。
原始视频数据有多大?经过上面简单计算你基本清楚了吧,别说实时传输目前的带宽远远不够,就是你想在自己的PC机子上存储一部高清好莱坞大片,以现在一般用户的硬盘空间也远远不够。(全高清1080P 2小时的大片,原始数据量大约为4171G)
计算了这么多,只是想说明一个问题,原始视频的数据量相当大,不可能直接进行实时网络传输,甚至连存储的代价都相当大。
这就需要做视频压缩,也就是说去除掉原始数据中的一些冗余,然后再进行传输或者存储,来减少对带宽和存储空间的需求。
大家现在可以在2M的带宽上享受高清实时视频服务,可以在一张4G的蓝光DVD里面存储高清视频,这是因为这些传输或者存在的视频信号已经经过了压缩。
而视频压缩又究竟是什么原理呢?为什么能进行压缩传输,显示端又能完美呈现呢?视频压缩又有 那些关键因素呢?
上面一篇文章提到了,视频压缩的目的是为了减少视频存储的空间或者视频传输带宽。既是存储和带宽相对廉价的今天,要实现视频的大容量存储(如视频监控)和实时传输,没有视频压缩几乎不可能。
视频压缩现状:
视频压缩编码标准种类繁多,其中ITU下主导的H.26x系列和ISO主导的MPEG系列影响最大,应用最为广泛。早期,ITU下的H.26x主要应用于实时领域;ISO的MPEG系列(它包括音频压缩标准)主要应用于广播电视,VCD(MPEG1),DVD(MPEG2)存储。ITU发展到H.264后,开始与ISO的MPEG4融合。被纳入MPEG-4的第十部分。
目前主流的压缩标准为H.264/AVC。它在实时传输和存储领域已经得到广泛的应用。H.264于2003年正式发布,距今已经9年。我认为H.264标准未来5年还是视频应用主力。其在IPTV,视频监控,视频会议,和光盘存储中将继续占主导地位。
视频压缩先进性评价:
评价一种视频压缩算法是否先进,就开它与其它压缩算法相比,在同等视频质量条件下,压缩倍数是否更高。
在上一篇博文中我计算过,1080P 25fps的原始视频数据量 (注:这里我写的M都是Mb的意思,就是说按网络带宽的意义去计算,网络带宽就是按每秒多少bit流来计算的,而存储容量的最小单位为Byte,也就是字节(8bit)。存储容量单位的1M表示1MB,等于网络带宽8Mb)。每秒大概数据量为593Mb。如果用户带宽为4Mb,想实现1080P 的实时会议或者监控,最少需要将原始视频压缩近593/4
= 150倍。
当前高清实时视频应用的实现一般都采用H.264算法。因为在同等视觉效果下,它的压缩比比其它标准最少提升2倍。如H.264目前能在4M甚至是2M带宽下实现1080P实时传输,而其它算法几乎是无法实现的。
视频压缩算法发展的动力:
“一切动力来自人类的无穷欲望”,视频技术的发展也是如此。在电影电视领域,当大家欣赏到高清效果后,再也无法接受过去的标清时代的画质体验。而在3D电影《阿凡达》推出后,全球又刮起了一阵3D旋风。在通信领域,人们希望能随时随地的进行面对面的沟通。这两年思科等厂商推出的沉浸式网真视频会议抄得火热。监控和IPTV也早已步入全高清时代。未来将发展到3D时代。
更高的视觉享受更为细腻和清晰的画面质量。视频数据量更大。对传输和存储的压力也更大。因此对视频压缩算法的要求更高。希望能有更高的压缩比来减少对存储和传输视频信号的压力。
视频业务发展的基础:
视频压缩的核心思想就是利用视频信号的特点,去除视频信号的时间和空间冗余。从H.261到H.264,MPEG1到MPEG4。算法的压缩比有很大提升。未来还有H.265等更为先进的算法出现。算法研究者们不断推动高效高性能算法的出现是视频业务发展的技术基础之一。
算法压缩比越高,一般而言算法本身的复杂度也会相应提高。复杂的算法,需要更强大的计算能力。特别是实时的视频业务。因此芯片计算发展,是视频通信和业务能否发展起来的硬件保障。当前DSP芯片处理能力也不断大幅提升,在一定带宽条件下实现实时编码已毫无问题。视频信号处理芯片能力的提升,是高效压缩算法得到实现的硬件保障。
最后网络带宽的提升也是一个重要条件,特别是今年来无线视频业务的发展,得益于无线网路带宽的提升。
算法本身的发展,芯片能力,网络带宽。这三者一起推动了当今高清视频业务的普及,也是未来3D业务发展的技术基础。

视频会议压缩算法之-H.264 High profile

H.264 High Profile
实时视频还是继续向更高质量,更低带宽的方向发展。H.264 High profile技术于2010年率先被polycom应用于视频会议系统。比h.264 baseline进一步节约了近一半的带宽。当然我个人心存怀疑,觉得大分辨率图形带宽应该能减少40%到50%,如果较小分辨率,码率比例未必有那么明显。不过,大分辨率图形的码率降低,才是关键,z在高清在实时会议中,采用H.264
baseline,带宽要求还是比较高的。特别是要做1080P 30pfs甚至60pfs时。如果能减少一半带宽,意味着节省2-4 M带宽,如果是在MCU侧,则带宽节省就更可观了。
这里对h.264的几个profile做个简单介绍:
AVC/H.264 规定了多种不同的Profile:最低Profile、主要Profile、扩展Profile、高端Profile(这些Profile 本身还要划分数个等级)。
  -最低Profile,也叫做底线Profile(Baseline Profile)支持I/P 帧,只支持无交错(Progressive)和CAVLC;
  -扩展Profile(Extended Profile)支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC;
  -主要Profile(Main Profile)提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced),同样提供对于CAVLC和CABAC 的支持;
  -高端Profile(High Profile)在主要Profile 的基础上增加了8x8 内部预测、自定义量化、无损视频编码和更多的YUV 格式;
(下面直接引用polycom的一篇扫盲文档)
为了对这些功能进行有序的整理,H.264 按照递进的复杂性和性能将这些功能归成了几类规范。图中 描述了H.264 中的4 个标准化规范之间的关系。
H.264 profiles
今天大多数视频通信系统采用的是Baseline Profile。Baseline 是最基本的H.264 profile 和定义。例如,它对图片进行Z 形扫描,然后采用4:2:0 色度取样。在Baseline
Profile 中,图片被分割成多个4x4 像素块,每块进行单独处理。Baseline Profile 另一个重要因素是采用了统一可变长编码(UVLC)和文本自适应可变长编码(CAVLC)熵编码技术。编码效率对用于视频的网络带宽有很大影响,编码技术的进步有助于提高 High
Profile 的效率,超越Baseline Profile, 如下所述。
Extended Profile 和Main Profile 标准包含Baseline Profile 的功能,并增加了对预测算法的改进。如果你想达到1000-2000 倍的压缩比,那么单独传送每一个单独帧(试想每秒30 帧的高质量视频)显然是不可行的,而H.264 中大量使用了时间域和运动预测,因此它只允许传输与前一帧不同的画面。以此来获得惊人的效率,尤其是对于变化小和运动少的场景。
High Profile 是H.264 中最强大的标准规范,它可以实现最有效的视频编码。例如,采用文本自适应二进制算术编码(CABAC)进行编码所获得的编码增益比Baseline Profile 中采用的UVLC
/CAVLC 编码更有效率。
High Profile 还采用自适应变换,自动确定是采用4x4 还是8x8 像素块。例如,4x4 像素块用于图像中细节密集的部分,而细节改变很少的图像则采用8X8像素块。
H.264 还提供了一个解码器框图,但为了简练, 我们在本文将不做详细介绍,因为它与编码功能有很多重叠内容。
High Profile 的主要优势
能够保持视频质量并大幅降低所需网络带宽的能力对视频网络的各个方面都会产生影响。因此, High Profile 能够降低新的与现有视频部署的成本,并加速获得投资回报(ROI)。
引用结束
看上面的图,和我之前说的一样,算法压缩效率高,一般算法复杂度就越高,要实现实时压缩,对芯片的技术能力要求就越高。所以呢,highprofile技术的应用是芯片或者说半导体技术发展的必然。未来也将走向更为复杂的H.265。
H.264中还有一个SVC概念(Scalable Video Coding),可分层编码。先不管其具体的含义,来想象下视频通信中可能遇到的问题。
1.带宽问题,IP网络带宽是不稳定的,网络带宽降低是,视频流应该自动的降低码率,以适应当前带宽。而视频流码率的降低,并不意味着视频通信的结束,只是其帧率和分辨率相应降低。这样还是能维持基本的视频通信如帧率可以从60fps降低30fps或者25fps甚至20pfs。分辨率可以从高清降到标清的4cif甚至cif。这样可以很大程度的降到码率,但同时保证了视频通信的基本功能正常进行(用户还是能看到能够分辨的图形和听到清晰的声音)。
2.在未来的通信中,参与视频对话的终端多种多样,有专用的硬件视频终端,有桌面软终端,还有移动终端中的PAD和手机。终端的多样性对视频码流的要求也不一样。如移动终端一般相对带宽较小,且屏幕尺寸也较小,屏幕宽高比也不同。每种终端希望拿到最适合自己的视频码流,既适合自己的网络带宽,又适合自己的硬件能力。如一种设备编码流出来后,其中既包含了高清到标清不同分辨率,又具有各种帧率。终端只需要发起申请,从其中拿到适合自己的码流,这是一件多好的事情,避免的转码,同时合理的利用的带宽和终端的硬件能力。
SVC的本意就是如此,能够实现码流的可伸缩,也就是说能根据带宽,终端的要求,自动调整发送给终端视频流的格式。一次性编码适应于多种信道和终端。视频会议中有一种MCU设备,你要是研究MCU的功能,你会发现它多么适合采用SVC技术。SVC技术的应用理论上应该能节省MCU的部分计算资源。但一路SVC码流实际上市多组码流构成的,它们是相互独立的,如果全部传输和存储必然是带宽和容量的增加。因此这种技术适合使用在中央设备上(如MCU),终端上是不会使用到的。SVC希望做到一次编码后,按需分配。
目前SVC技术应用得不广泛,RADVISION宣称已经支持。目前MCU所做的是要么按最低能力编码发送,要么按数组能力编码,数组码流发送。SVC技术无法做到跨越视频压缩标准,也就是所需要都在H,264或者其它莫一个相同的视频压缩标准之内,所以收端都支持该标准。如果跨域压缩标准(如终端中支持的压缩标准不相同,如只支持MPEG 或者只支持H.263或者只支持H.264),则终端设备还必须做转码才能实现互通。
转载地址:点击打开链接 。虽然那边也是转过来的