1. 程式人生 > >聽趣拍雲產品經理剖析視訊基礎知識

聽趣拍雲產品經理剖析視訊基礎知識

https://mbd.baidu.com/newspage/data/landingsuper?context={"nid"%3A"news_3310310027998234129"}&n_type=1&p_from=3
【深度分解】聽趣拍雲產品經理剖析視訊基礎知識(1)

陳墨
百家號17-03-1714:08

花濰趣拍雲產品經理

深度分解視訊基礎知識“視訊技術發展到現在已經有100多年的歷史,雖然比照相技術歷史時間短,但在過去很長一段時間之內都是最重要的媒體。由於網際網路在新世紀的崛起,使得傳統的媒體技術有了更好的發展平臺,應運而生了新的多媒體技術。而多媒體技術不僅涵蓋了傳統媒體的表達,又增加了互動互動功能,成為了目前最主要的資訊工具。在多媒體技術中,最先獲得發展的是圖片資訊科技,由於資訊來源更加廣泛,生成速度高生產效率高,加上應用門檻較低,因此一度是網際網路上最有吸引力的內容。然而隨著技術的不斷進步,視訊技術的製作加工門檻逐漸降低,資訊資源的不斷增長,同時由於視訊資訊內容更加豐富完整的先天優勢,在近年來已經逐漸成為主流。那麼接下來我就對視訊資訊科技做一個詳細的介紹。今天我們首先講的是模擬時代和數字化時代的視訊技術。”

模擬時代的視訊技術最早的視訊技術來源於電影,電影技術則來源於照相技術。由於現代網際網路視訊資訊科技原理則來源於電視技術,所以這裡只做電視技術的介紹。世界上第一臺電視誕生於1925年,是由英國人約翰貝德發明。同時也是世界上第一套電視拍攝、訊號發射和接收系統。而電視技術的原理大概可以理解為訊號採集、訊號傳輸、影象還原三個階段。攝像訊號的採集,通過感光器件獲取到光線的強度(早期的電視是黑白的,所以只取亮度訊號)。然後每隔30~40毫秒,將所採集到光線的強度資訊傳送到接收端。而對於訊號的還原,也是同步的每隔30~40毫秒,將訊號掃描到熒光屏上進行展示。那麼對於訊號的還原,由於熒光屏電視採用的是射線槍將射線打到熒光圖層,來激發熒光顯示,那麼射線槍繪製整幅影象就需要一段時間。射線槍從螢幕頂端開始一行一行的發出射線,一直到螢幕底端。然後繼續從頂部開始一行一行的發射,來顯示下一幅影象。但是射線槍掃描速度沒有那麼快,所以每次影象顯示,要麼只掃單數行,要麼只掃雙數行。然後兩幅影象疊加,就是完整的一幀畫面。所以電視在早期都是隔行掃描。

那麼訊號是怎麼產生的呢?跟相機感光原理一樣,感光器件是對光敏感的裝置,對於進光的強弱可以產生不同的電壓。然後再將這些訊號轉換成不同的電流發射到接收端。電視機的掃描槍以不同的電流強度發射到熒光屏上時,熒光粉接收到的射線越強,就會越亮,越弱就會越暗。這樣就產生了黑白訊號。那麼幀和場的概念是什麼?前面說到,由於攝像採集訊號屬於連續拍攝影象,比如每隔40毫秒擷取一張影象,也就是說每秒會產生25副影象。而每個影象就是一幀畫面,所以每秒25副影象就可以描述為幀率為25FPS(frames per second)。而由於過去電視熒光屏掃描是隔行掃描,每兩次掃描才產生一副影象,而每次掃描就叫做1場。也就是說每2場掃描生成1幀畫面。所以幀率25FPS時,隔行掃描就是50場每秒。模擬時代在全世界電視訊號標準並不是統一的,電視場的標準有很多,叫做電視訊號制式標準。黑白電視的時期制式標準非常多,有A、B、C、D、E、G、H、I、K、K1、L、M、N等,共計13種(我國採用的是D和K制)。到了彩色電視時代,制式簡化成了三種:NTSC、PAL、SECAM,其中NTSC又分為NTSC4.43和NTSC3.58。我國彩色電視採用的是PAL制式中的D制調幅模式,所以也叫PAL-D制式。有興趣的可以百度百科“電視制式”來詳細瞭解。另外你可能會發現,場的頻率其實是和交流電的頻率一致的。比如我國的電網交流電的頻率是50Hz,而電視制式PAL-D是50場每秒,也是50Hz。這之間是否有關聯呢?可以告訴你的是,的確有關聯,不過建議大家自己去研究。彩色訊號又是怎麼產生的呢?其實有了基礎的黑白攝像技術之後,人們就一直想實現彩色攝像。早在1861年,英國物理學家麥克斯韋就論證了所有彩色都可以使用紅、藍、綠三種基色來疊加生成。但是感光器件只是對光線敏感,但是對顏色卻無法識別。為了實現對顏色的識別,人們用分光鏡加濾光片的方式,將光線分解成為三種基色的純色模式。然後分別對三個基色的純色亮度進行採集,然後再把訊號疊加實現了對彩色訊號的採集能力。
在這裡插入圖片描述

在這裡插入圖片描述
色彩訊號是如何表達的?因為原來黑白電視的時候,基本上只需要一路訊號就可以還原影象(同步訊號後面講)。但是有了彩色之後,一路訊號能否表達一副完整的彩色影象,以及如何表達呢?彩色電視出現之後,為了相容早期的黑白電視訊號(也就是黑白電視機可以接收彩色訊號,但是隻顯示黑白),科學家引入了YUV色彩表示法。YUV訊號有多種叫法,可以稱作色差訊號(Y,R-Y,B-Y),也可以稱作分量訊號(YCbCr,或者Component、YPbPr)。它是由一個亮度訊號Y (Luminance或Luma),和兩個色度訊號U和V組成(Chrominance或Chroma)。黑白電視只使用亮度訊號Y,彩色電視可以額外使用兩個色度訊號,來實現彩色效果。但是YUV訊號是怎麼來的呢?首先,是因為考慮到黑白電視相容,所以基礎訊號仍然採用亮度訊號。而顏色表達本身是通過RGB三基色的疊加來實現的,為了能夠將YUV訊號可以還原成三基色RGB色彩值,數學家利用了色差演算法,即選取一路Cr訊號和一路Cb訊號。Cr訊號是指RGB的紅色訊號部分與RGB亮度值之間的差異,Cb訊號是指RGB的藍色訊號與RGB亮度值之間的差異。所以YUV訊號有時候也表達為Y,R-Y和B-Y,所以也叫色差訊號。為什麼YUV色彩會延續至今?如果大家平時經常拿手機拍攝視訊,你可以把拍攝的視訊檔案傳輸到電腦上,然後用MediaInfo軟體開啟,你會發現很多關於視訊的引數資訊。而這些引數資訊裡面,你一定會發現手機拍攝的視訊色彩也是使用YUV訊號模式。為什麼不用RGB來表達?現在早都沒有黑白電視了啊?其實不必考慮相容性的原因,因為你無論是什麼訊號模式拍攝的視訊,只要是數字化的資訊檔案形式,都可以與播放裝置的訊號模式無關。因為播放裝置在播放視訊檔案時需要解碼,再進行渲染。這時候不管什麼訊號模式還是色彩空間,都能轉化成裝置相容的方式。至於為什麼YUV訊號模式一直會持續至今,最主要的原因不是因為相容性考慮,而是YUV訊號有個巨大的優勢,就是節省頻寬。這在數字媒體領域是很重要的。人眼的視覺特點是,人眼對於亮度訊號最為敏感,對色度訊號敏感度要弱一些。所以可以適當減少色度訊號的容量,也不會被人眼觀察到差異。就好比音訊裡面的MP3壓縮格式,是將耳朵不敏感的頻率訊號容量降低或去除掉,以大大降低檔案的大小,但是人耳卻基本聽不到差異。至於YUV訊號是如何做到降低資訊容量的,可以看下面的引文:YUV主要的取樣格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。其中YCbCr 4:1:1 比較常用,其含義為:每個點儲存一個 8bit 的亮度值(也就是Y值),每 2x2 個點儲存一個 Cr 和Cb 值,影象在肉眼中的感覺不會起太大的變化。所以, 原來用 RGB(R,G,B 都是 8bit unsigned) 模型, 1個點需要 8x3=24 bits(如下圖第一個圖),(全取樣後,YUV仍各佔8bit)。按4:1:1取樣後,而現在平均僅需要 8+(8/4)+(8/4)=12bits(4個點,8*4(Y)+8(U)+8(V)=48bits), 平均每個點佔12bits。這樣就把影象的資料壓縮了一半。以上內容引自百度百科“YUV”條目。限於篇幅原因,對於YUV的各種取樣模式不再祥加描述,大家可以參考百度百科中的詳細解釋。

數字化時代的視訊技術視訊技術發展到了數字化時代,其實原理上並沒有太多變化。這也就是為什麼前面要提到模擬時代視訊技術的知識的原因。但是數字化的視訊技術,雖然基礎原理沒有改變,但是各方面的效能和功能有了很大的提升。這些就重點講一下數字化之後的視訊技術有了哪些突破:

彩色攝像的演進前面講到,實現彩色攝像其實是把光線分解成為三個基色分別取亮度值,但是這種結構比較複雜,成本也高。因為實現彩色攝像需要有一個分光用的稜鏡,然後採集光線必須要用到三片感光器件(CCD或CMOS)。這種結構帶來第二個不好的地方就是結構會比較龐大,不利於小型化微型化。後來呢,德國人拜耳發明了一種濾鏡,是一種馬賽克濾鏡。將含三基色的馬賽克濾鏡覆蓋在感光器件上面,這樣就可以實現用一片感光器件來採集三種顏色,同時也取消了分光稜鏡這種結構。這樣下來,不僅成本降低了,結構也簡化了。
在這裡插入圖片描述
有了這種技術之後,攝像裝置就可以越做越小,現在整合在手機上的攝像頭整體厚度只有2~3毫米,尺寸只有1~3毫米。當然在專業領域,高階的攝像機仍然採用分光稜鏡加3CCD的技術,原因不是他們不願意改,而是3CCD的色彩丰度更好。而且專業攝像機CCD技術也從IT型發展到了FIT型,感興趣的同學可以檢視一下SONY公司關於FIT型CCD專業攝像機的介紹來了解。總而言之,就是民用領域和專業領域發展方向不一樣,所以路線也不同。場概念消失在模擬電視時代,受限於映象管技術原因,採用的是隔行掃描技術來還原影象顯示。但是現在都是平板電視了(液晶電視、等離子電視、鐳射電視),電視的成像方式不再是一條線一條線的掃描,而是一次性全畫面呈現。所以現在的視訊拍攝一般都沒有場的概念,當然為了向前相容,在視訊檔案資訊中,你會看到掃描模式的引數。利用手機拍攝的視訊檔案,其掃描模式的引數都是Progressive,就是逐行掃描的意思。取樣率和取樣精度大家都知道模擬和數字的最大差別就是資訊儲存和傳遞方式,一個是模擬量一個是數字量化的。那麼數字化對於連續過程的量化就必須用到取樣過程,也可以理解為片段化。例如音訊數字化,就是把音訊在每個很小的時間間隔上獲取音訊的資訊然後進行數字量化,最後把所有連續取樣的數字量化資料組合,來形成最終的資訊。視訊也是這樣,按照一定的時間間隔,把獲取到的影象進行數字量化,然後連續的數字量化的集合就是一段完整的視訊檔案。但是視訊的取樣率並非是大家理解的那樣,每秒鐘產生25幀的影象,取樣率就是25Hz。實際上,ITU(International Telecommunications Union,國際電信聯盟)在CCIR 601標準中,對於視訊的取樣標準有了明確的界定:一、取樣頻率:為了保證訊號的同步,取樣頻率必須是電視訊號行頻的倍數。CCIR為NTSC、PAL和SECAM制式制定的共同的電檢視像取樣標準:f s=13.5MHz這個取樣頻率正好是PAL、SECAM制行頻的864倍,NTSC制行頻的858倍,可以保證取樣時取樣時鐘與行同步訊號同步。對於4:2:2的取樣格式,亮度訊號用fs頻率取樣,兩個色差訊號分別用f s/2=6.75MHz的頻率取樣。由此可推出色度分量的最小取樣率是3.375MHz。二、解析度:根據取樣頻率,可算出對於PAL和SECAM制式,每一掃描行取樣864個樣本點;對於NTSC制則是858個樣本點。由於電視訊號中每一行都包括一定的同步訊號和回掃訊號,故有效的影象訊號樣本點並沒有那麼多,CCIR 601規定對所有的制式,其每一行的有效樣本點數為720點。由於不同的制式其每幀的有效行數不同(PAL和SECAM製為576行,NTSC製為484行),CCIR 定義720×484為高清晰度電視HDTV(High Definition TV)的基本標準。實際計算機顯示數字視訊時,通常採用下表的引數:
在這裡插入圖片描述
三、資料量:CCIR 601規定,每個樣本點都按8位數字化,也即有256個等級。但實際上亮度訊號佔220級,色度訊號佔225級,其它位作同步、編碼等控制用。如果按f s 的取樣率、4:2:2的格式取樣,則數字視訊的資料量為:

13.5(MHz)×8(bit)+2×6.75(MHz)×8(bit) = 27Mbyte / s同樣可以算出,如果按4:4:4的方式取樣,數字視訊的資料量為每秒40兆位元組!按每秒27兆位元組的資料率計算,一段10秒鐘的數字視訊要佔用270兆位元組的儲存空間。按此資料率,一張680兆位元組容量的光碟只能記錄約25秒的數字視訊資料資訊,而且即使當前高倍速的光碟機,其資料傳輸率也遠遠達不到每秒27兆位元組的傳輸要求,視訊資料將無法實時回放。這種未壓縮的數字視訊資料量對於當前的計算機和網路來說無論是儲存或傳輸都是不現實的,因此,在多媒體中應用數字視訊的關鍵問題是數字視訊的壓縮技術。由上述引文可知,YUV的取樣率和取樣精度,是數字視訊從模擬向數字化過渡中相容性的解決方案。延續了模擬視訊以行為單位掃描的機制(模擬視訊沒有解析度概念,只有行的概念)。由於這套標準是面向數字電視廣播系統制定的統一標準,一般只在廣播電視領域中才會看到,而在其他的數字化視訊體系中基本沒有體現。比如你在視訊檔案資訊中找不到關於取樣率的引數。視訊解析度視訊解析度也是數字化視訊時代的主要特徵,由於模擬視訊採用線掃描機制,也就是按行顯示影象,而每一行的視訊線中並沒有進行數字量化,所以模擬視訊都是以多少行來界定的。比如PAL制式採用576行,NTSC制式採用480行。到了數字化時代,為了量化視訊的具體資訊,就必須對每行的資訊進行取樣並量化,就形成了解析度的概念。如果採用PAL制式的視訊,每行量化的影象點為768個,那麼解析度就是768×576。也就是說把PAL制的視訊影象可以分解為768×576個畫素點組成。雖然簡單的看視訊解析度的概念挺簡單的,但實際上並沒有那麼簡單。原因就是數字化視訊的應用領域非常的多,從最早的廣播電視應用,到監控安防,到網際網路應用,後來又到了高清數字電視,以及移動網際網路等等。而因為涉及的行業很多,每個行業都會制定自己的標準,所以就形成了對視訊影象解析度的定義有了很多標準。我們就拿最常見的廣播電視、監控安防為例:大家在計算機領域也都有接觸過解析度的概念,比如VGA(640×480)、SVGA(800×600)、XGA(1024×768)、SXGA(1280×1024)、SXGA+(1400×1050)、UXGA(1600×1200)、WXGA(1280×800)、WXGA+(1280×854/1440×900)、WSXGA(1600×1024)、WSXGA+(1680×1050)、WUXGA(1920×1200)等等。現在最高的標準是WQUXGA(3840×2400)。這個標準最早是由IBM制定的模擬訊號的電腦顯示標準,後來被各廠家繼續沿用和升級。再後來被VESA標準化組織統一制定。但是為什麼解析度就不能是簡單的數字,非要在前面弄一堆字母呢?這一堆字母絕對能把一大群人搞暈掉。原因在於制定一個輸出的解析度,並不是簡單的設定有多少個畫素點,而是還要考慮到實現這個畫素點成像的方法。包括色階多少、頻寬多大、掃描方式怎樣,如果深入的講還有電路形式、增益控制、時序方式、定址方式等等。如果沒有詳細制定這些影象是如何生成的,那麼各個廠家之間的產品可能很難相容,也就不會見到今天如此發達的計算機市場了。同樣的道理,制定標準化的解析度和實現方式,有助於行業的統一和相容。監控安防領域有什麼解析度標準呢?下面請看:
在這裡插入圖片描述
這裡解釋一下,CIF是 Common Intermediate Format 的縮寫,即通用影像傳輸視訊會議(video conference)中常使用的影像傳輸格式,是ITU H.261協議中的一部分。大家可能發現了,每個解析度的色度取樣個數和行數都是對應解析度的一半。沒錯,因為這個標準因為考慮到攝像頭的效能和傳輸的效能影響,採取的是間隔畫素取樣和隔行掃描機制,而間隔畫素取樣通過插值進行補齊。

不過這些引數貌似現在很難見到了,為什麼呢?很簡單,因為監控安防現在都是高清化了,都是D2、D3這種級別的,對應解析度是720P和1080P這一類。那麼在廣播電視領域,對於解析度的定義又是怎樣呢?前面已經提到了關於PAL制和NTSC制式的視訊解析度標準,另外還有一個SECAM制式,SECAM的解析度為720×576。那麼你會發現SECAM制式和PAL制的行數是一樣的,只有每行的解析度不同。這是由於SECAM調製載波方式不同造成的。在標清電視時代,對於解析度方面理解與現在其實有所不同。比如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。關於畫素縱橫比和顯示縱橫比的概念,相對比較簡單,這裡就不做解釋了。關於訊號同步訊號同步是在廣播電視領域中非常重要的技術,因為它如果出現問題,你的電視畫面一定是沒法看的,比如下面這種情況:
在這裡插入圖片描述
產生這種畫面的原因,在於訊號沒有同步。導致行掃描時,沒有在指定的位置。要想影象內容在正確的位置顯示,就必須提供同步訊號來進行約束。而不管是模擬電視時代,還是在數字電視時代,不管是電視機還是顯示器都需要訊號同步。同步訊號一般有兩種,分別為場同步(VSYNC)和行同步(HSYNC)。不論是什麼型別的訊號介面,都包含有一個或兩個同步訊號。

VGA訊號線的引腳定義
在這裡插入圖片描述
另外一種形式的VGA介面,也叫RGBHV介面
在這裡插入圖片描述
DVI介面引腳定義
在這裡插入圖片描述
專業裝置中的專用視訊同步介面

雖然有很多裝置如電視機的複合訊號輸入(Composite)、HDMI輸入,顯示器的DisplayPort輸入,專業裝置的SDI和HD SDI輸入,都沒有專門的視訊場同步和行同步訊號介面,但並不是說這些訊號不需要同步。而是這些訊號介面把場同步和行同步訊號已經調製到了訊號中。也就是說我們平時見到的視訊訊號介面中,並非只有純粹的視訊資訊,還包含了很多的資訊,比如同步訊號、時鐘訊號(TC,TimeCode)、CEC控制訊號、HDCP版權保護資訊、SerialClock裝置與解析度識別資訊等。未完待續

【深度分解】聽趣拍雲產品經理剖析視訊基礎知識(2)

陳墨
百家號17-03-2014:30

花濰趣拍雲產品經理

深度分解視訊基礎知識

“隨著技術的不斷進步,視訊技術的製作加工門檻逐漸降低,資訊資源的不斷增長,同時由於視訊資訊內容更加豐富完整的先天優勢,在近年來已經逐漸成為主流。在基礎知識(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級是(比較常見的色階標準),結果就是下面這樣:
在這裡插入圖片描述
同樣的RGB三基色中,每種顏色都有色階。8bit資料能夠儲存256個色階,那麼RGB三基色就可以實現1677萬種顏色,也就是24位色。

注:計算機顏色體系中有32位色,實際上是24位色之外增加了一個8位的Alpha透明層,所以也叫RGBA。

那能不能使用更高的色階呢?大於256級色階好不好?當然好了,不過一般的顯示器不支援。但是的確是有高色階的顯示器,目前色階最高的顯示器可以支援10bit顏色資訊,也就是1024級色階。當然價格是不可想象的!
在這裡插入圖片描述
EIZO GX540醫學顯示器,1024級色階黑白顯示器價格不明,但不會少於10萬元
在這裡插入圖片描述
SONY BVM-X300主控監視器,OLED顯示10bit彩色可以顯示10億種顏色價格嘛,我記得大概是36萬多吧

還有得告訴大家一個不好的訊息,一般民用的低端顯示器採用的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的解析度很低,只有352×288(對應PAL制),比標準的電視畫面的清晰度小很多。

VCD在運動不太明顯的情況下畫質還可以接受,如果是運動很快的畫面中,就會出現很多慘不忍睹的馬賽克。

有了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幀,使用了向前預測幀方式,而且壓縮率是可變的。總的來說,就是大動態時候不會有馬賽克了。

  1. 增加了很多額外的資訊,功能更加強大。比如支援更強的互動與命令控制(大家有沒有想起來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-1壓縮比為20~30倍,MPEG-2壓縮比為10~20倍,MPEG-4壓縮比從幾十到一百多倍不等;

對於畫面內容可以使用不同的壓縮比率,可以對非重要物件使用高壓縮比,對重要物件使用低壓縮比。這樣可以在保證主要畫質情況下壓縮比更高;

不同物件可以使用不同編碼演算法,進一步提升壓縮效率;

音視訊搭配更靈活;

互動性更強,尤其適合網際網路這種模式。

MPEG-4後來產生了很多衍生壓縮演算法,比較著名的就是Xvid和Dvix了。其實MPEG-4的知名度不如Xvid和Dvix,因為在那個時期,MPEG-4為了適應網際網路較低的頻寬速度,大部分應用都是一些低解析度低碼流的視訊。而Xvid和Dvix雖然源自MPEG-4體系,但是面向視訊檔案存檔進行了優化,可以比DVD小3~4倍的大小,儲存與DVD畫質非常接近的視訊內容。受到了使用者的極大喜愛,以至於在那個時期已經成為盜版影片的必選格式。
在這裡插入圖片描述
RealMedia——曾經的王者曾經網際網路視訊最大的贏家是Real Network,也是它最早實現了基於網際網路的流媒體視訊(線上觀看)。想當年還在56K Modem窄帶時期,Real Network公司就已經提供了視訊線上觀看功能。筆者曾經在那個還在PSTN上進行撥號的時代,體驗過通過realplayer觀看NBA的直播。如果以現在的標準來衡量那個時期的產品,那就是延時巨大(經常要loading幾分鐘)、畫質慘不忍睹(解析度超低,馬賽克嚴重)、經常性的卡頓。

但是隨著寬頻的逐漸普及,RealMedia的巨大優勢得以施展。在那個時期,RealMedia是當之無愧的王者。
在這裡插入圖片描述
首先,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萬多美金)。
在這裡插入圖片描述
對於商業化應用的企業而言,要想做直播和點播業務,自然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”動態位元速率或者叫可變位元速率。關於位元速率的解釋我們在文章最後來做。
在這裡插入圖片描述
RM升級到RMVB之後,一直被詬病的畫質問題得到了提升,同時也可以支援較高的清晰度(最大到720P)。但是RMVB推出的時間已經晚於競爭對手,加上商業化的原因,以及更新速度越來越慢。最終消失在網際網路的視野中。

Flash Video的崛起不同於RealMedia的全行業流行,Flash Video(以下簡稱FLV)主要應用在流媒體領域,提供VOD點播和LIVE直播服務。與Dvix和Xvid一起成為了第二階段的黃金組合。
在這裡插入圖片描述
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 VideoWMV一直是一種不溫不火的壓縮編碼格式,出道很早,但應用很少。早在RealMedia時期,微軟就已經推出了WMV壓縮格式。並可以配合Windows Media Encoder實現流媒體應用,也可以單獨編碼以檔案形式儲存。可以說路數跟Real公司一樣,只不過是免費的。
在這裡插入圖片描述
其實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
在這裡插入圖片描述
目前大家最熟悉的壓縮編碼格式莫過於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是融合了兩家權威組織的知識結晶,是目前世界上最優秀的編碼演算法。它的特點非常多,我只列舉一下大家能感知到的一些特點。更多的內容大家可以自行查閱資料。

編碼壓縮率較高,也很靈活。同等畫質下,壓縮率為MPEG-2的2倍,MPEG-4的1.5~2倍。而且可以用很高的位元速率(MPEG-2接近)和很低的位元速率(MPEG-2的1/8),來實現更快的傳輸需要和更高的畫質需要。

動態效果更出色,基本上徹底消除了馬賽克現象。比如像《變形金剛》電影裡面的大動態場景,你仍然可以非常清晰的看清畫面。

壓縮效率更高,比如靜態畫面可以實現超高的壓縮比。這是因為H.264/MPEG-4 AVC最大程度的去除冗餘資料,使得編碼效率提升。

錯誤修復能力,可以在網路QOS較差的環境下更高效率的傳輸。

適合各種行業應用,不管是視訊會議、安防監控這類的高壓縮使用,還是網際網路流媒體的動態網路環境使用,以及廣播電視這類高畫質標準使用。所以你看到的結果就是,幾乎所有行業都在使用這個標準(國內的有線電視仍然是MPEG-2,主要是由於有線電視的頻寬很高且目前還比較充裕,加上技術升級成本很高)。比如小到CIF尺寸的視訊,大到4K標準的電影檔案,你會發現他們基本都是基於H.264/MPEG-4 AVC壓縮的。

行業應用廣泛還得益於H.264/MPEG-4 AVC這種編碼格式的產品線健全。

大家可能都知道的一個道理,當壓縮率越高的時候(同等畫質下),編碼就越複雜,計算量越高。對H.264的編碼和解碼,其計算量比過去的MPEG-2、MPEG-4等都高了很多。所以也就會出現較早期的電腦在軟解碼(CPU解碼)H.264視訊的時候,容易出現卡頓。就是因為對計算效能要求較高。

但是好在有大量的專用編碼解碼晶片,以及專門對H.264編解碼優化過的GPU(手機GPU和電腦顯示卡GPU),使得流暢性和速度得到了保障。所以你會發現某些高畫質的視訊,可能在電腦上播放會很卡,但是在一些機頂盒上播放會非常流暢。

H.265
在這裡插入圖片描述
其實在H.264還沒流行起來,H.265標準就已經建立了。主要特點是壓縮效率進一步提升,對UHDTV的支援,更好的信噪比等等。

目前已經有一部分手機、監控安防裝置、視訊會議裝置開始使用H.265編碼格式。預計以後會更多,並且逐漸普及。

QuickTime家族
在這裡插入圖片描述
說起QuickTime,大家一定會想起蘋果公司。沒錯,quicktime就是蘋果公司推出的一整套編碼、解碼、播放和流媒體解決方案。quicktime的壓縮格式早期是私有的,由於早期MAC系列電腦(那時候沒有iphone)普及率很低,所以使用quicktime這種格式的非常少,包括他們的流媒體應用。

只是到了後期,隨著iphone的大量使用者,quicktime才被大家所知。但這個時候蘋果早就將quicktime標準加入到了MPEG-4標準體系中,以及後來H.264出現。結果大家都清楚了,蘋果目前也在用H.264壓縮標準。

壓縮編碼全集其實除了上面講到的主流非主流的視訊壓縮編碼格式以外,還有很多大家不瞭解的。因為應用非常少,且現在幾乎都是被H.264統一了市場,所以就不做介紹了。下面的表格是目前所有的視訊壓縮編碼標準集合:
在這裡插入圖片描述
關於碼流的詳解簡單的說碼流就是視訊每秒大概產生多大的視訊檔案,一般以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

小貼士老司機帶你瞭解一下常見的電影檔案資訊及特點現在很多電影的檔案看起來都比較長,大家不一定能夠理解。例如下面的: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新技能!比心!