爲什麼對視頻進行壓縮

要實現實時視頻通信,除了需比與其它數據通信(語音,非實時視頻,數據)更高的帶寬外,還需要對視頻信號進行較大的壓縮。網絡帶寬正隨着無線接入技術和有線傳輸技術的發展不斷提升,但即使這樣,如果不對視頻信號進行必要的壓縮,目前用戶的接入帶寬也是遠遠無法滿足視頻通信的要求。

假設用戶接入網帶寬爲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主要應用於實時領域;ISOMPEG系列(它包括音頻壓縮標準)主要應用於廣播電視,VCD(MPEG1)DVD(MPEG2)存儲。ITU發展到H.264後,開始與ISOMPEG4融合。被納入MPEG-4的第十部分。

目前主流的壓縮標準爲H.264/AVC。它在實時傳輸和存儲領域已經得到廣泛的應用。H.2642003年正式發佈,距今已經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.261H.264MPEG1MPEG4。算法的壓縮比有很大提升。未來還有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,也叫做底線ProfileBaseline Profile)支持I/P 幀,只支持無交錯(Progressive)和CAVLC

  -擴展ProfileExtended Profile)支持I/P/B/SP/SI 幀,只支持無交錯(Progressive)和CAVLC

  -主要ProfileMain Profile)提供I/P/B 幀,支持無交錯(Progressive)和交錯(Interlaced),同樣提供對於CAVLCCABAC 的支持;

  -高端ProfileHigh Profile)在主要Profile 的基礎上增加了8x8 內部預測、自定義量化、無損視頻編碼和更多的YUV 格式;

(下面直接引用polycom的一篇掃盲文檔)

爲了對這些功能進行有序的整理,H.264 按照遞進的複雜性和性能將這些功能歸成了幾類規範。圖中 描述了H.264 中的4 個標準化規範之間的關係。

H.264 profiles



今天大多數視頻通信系統採用的是Baseline ProfileBaseline 是最基本的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),則終端設備還必須做轉碼才能實現互通。




轉載地址:點擊打開鏈接 。雖然那邊也是轉過來的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章