視頻
什么是視頻?
視頻其實(shí)就是由很多張圖片,時(shí)間間隔很小的連續(xù)展示出來(lái),人們就覺(jué)得畫(huà)面中的人物在動(dòng),這就是視頻。視頻的實(shí)質(zhì)就是N多張圖片的集合。那每張圖片和幀又有什么關(guān)系呢?
事實(shí)上,如果一視頻里面的圖片,我們?cè)獠粍?dòng)的全部存起來(lái),空間會(huì)很大很大很大,但是如果通過(guò)一定的算法,把每一張圖片壓縮一下,變成幀。再把幀連起來(lái)變成流,再把不同的流放到某個(gè)容器里面,這就是我們平常看見(jiàn)的電影文件了.
關(guān)于視頻的一些概念
視頻文件格式
視頻文件格式是指視頻保存的一種格式,視頻是電腦中[多媒體系統(tǒng)]中的重要一環(huán)。為了適應(yīng)儲(chǔ)存視頻的需要,人們?cè)O(shè)定了不同的視頻文件格式來(lái)把視頻和音頻放在一個(gè)文件中,以方便同時(shí)回放。
視頻文件格式有不同的分類,如:
- 微軟視頻 :[wmv]、[asf]、[asx]
- Real Player :[rm]、 [rmvb]
- MPEG視頻 :[mp4]
- 手機(jī)視頻 :[3gp]
- Apple視頻 :[mov]、[m4v]
- 其他常見(jiàn)視頻:[avi]、[dat]、[mkv]、[flv]、[vob]等
為什么會(huì)有這么多的視頻文件格式?
封裝格式
封裝格式(也叫容器),就是將已經(jīng)編碼壓縮好的視頻軌和音頻軌按照一定的格式放到一個(gè)文件中,也就是說(shuō)僅僅是一個(gè)外殼,或者大家把它當(dāng)成一個(gè)放視頻軌和音頻軌的文件夾也可以。說(shuō)得通俗點(diǎn),視頻軌相當(dāng)于飯,而音頻軌相當(dāng)于菜,封裝格式就是一個(gè)碗,或者一個(gè)鍋,用來(lái)盛放飯菜的容器。
封裝格式與編碼方式的對(duì)應(yīng)
- AVI:可用[MPEG-2], DIVX, XVID, WMV3, WMV4, WMV9, H.264
- WMV:可用WMV3, WMV4, WMV9
- RM/[RMVB]:可用RV40, RV50, RV60, RM8, RM9, RM10
- MOV:可用MPEG-2, MPEG4-ASP([XVID]), H.264
- MKV:可用所有[視頻編碼]方案
常見(jiàn)格式簡(jiǎn)介
AVI
AVI:比較早的AVI是Microsoft開(kāi)發(fā)的。其含義是Audio Video Interactive,就是把視頻和音頻編碼混合在一起儲(chǔ)存。AVI也是最長(zhǎng)壽的格式,已存在10余年了,雖然發(fā)布過(guò)改版(V2.0于1996年發(fā)布),但已顯老態(tài)。[AVI格式]上限制比較多,只能有一個(gè)視頻軌道和一個(gè)音頻軌道(有非標(biāo)準(zhǔn)[插件]可加入最多兩個(gè)音頻軌道),還可以有一些附加軌道,如文字等。AVI格式不提供任何控制功能。副檔名:[avi]WMV
WMV(Windows Media Video)是[微軟公司]開(kāi)發(fā)的一組數(shù)位視頻編解碼格式的通稱,ASF(Advanced Systems Format)是其[封裝格式]。ASF封裝的WMV檔具有“數(shù)位版權(quán)保護(hù)”功能。副檔名:[wmv]/[asf]、wmvhdMPEG
[MPEG格式]:MPEG(Moving Picture Experts Group),是一個(gè)[國(guó)際標(biāo)準(zhǔn)組織](IS0)認(rèn)可的媒體封裝形式,受到大部份機(jī)器的支持。其儲(chǔ)存方式多樣,可以適應(yīng)不同的應(yīng)用環(huán)境。MPEG-4檔的檔容器格式在Layer 1(mux)、14([mpg])、15(avc)等中規(guī)定。MPEG的控制功能豐富,可以有多個(gè)視頻(即角度)、[音軌]、字幕([位圖]字幕)等等。MPEG的一個(gè)簡(jiǎn)化版本3GP還廣泛的用于準(zhǔn)3G手機(jī)上。副檔名:dat(用于DVD)、[vob]、mpg/[mpeg]、[3gp]/3g2(用于手機(jī))等MPEG1
MPEG1:是一種 MPEG(運(yùn)動(dòng)圖像專家組)多媒體格式,用于壓縮和儲(chǔ)存音頻和視頻。 用于計(jì)算機(jī)和游戲,MPEG1 的分辨率為 352 x 240 象素,[幀速率]為每秒 25 幀(PAL)。 MPEG1 可以提供和租賃錄像帶一樣的[視頻質(zhì)量]。MPEG2
MPEG2: 是一種 MPEG(運(yùn)動(dòng)圖像專家組)多媒體格式,用于壓縮和儲(chǔ)存音頻及視頻。供廣播質(zhì)量的應(yīng)用程序使用,MPEG 2 定義了支持添加封閉式字幕和各種語(yǔ)言通道功能的協(xié)議。DivX/xvid
DivX是一項(xiàng)由DivXNetworks公司發(fā)明的,類似于MP3的數(shù)字多媒體[壓縮技術(shù)])。DivX基于MPEG-4,可以把MPEG-2格式的多媒體[文件壓縮]至原來(lái)的10%,更可把[VHS格式]錄像帶格式的文件壓至原來(lái)的1%。通過(guò)DSL或CableModen等寬帶設(shè)備,它可以讓你欣賞全屏的高質(zhì)量數(shù)字電影。同時(shí)它還允許在其他設(shè)備(如數(shù)字電視、藍(lán)光播放器、PocketPC、數(shù)碼相框、手機(jī))上觀看對(duì)機(jī)器的要求不高,這種編碼的視頻CPU只要是300MHz以上、64M內(nèi)存和一個(gè)8M顯存的顯卡就可以流暢地播放了。采用DivX的文件小,圖像質(zhì)量更好,一張CD-ROM 可容納120min的質(zhì)量接近DVD的電影。DV
DV:(數(shù)字視頻)通常用于指用數(shù)字格式捕獲和儲(chǔ)存視頻的設(shè)備(諸如便攜式攝像機(jī))。有DV 類型I 和 DV 類型II兩種AVI文件
DV類型I:數(shù)字視頻 AVI 文件包含原始的視頻和音頻信息。 DV 類型 I 文件通常小于 DV 類型 II 文件,并且與大多數(shù) A/V 設(shè)備兼容,諸如 DV 便攜式攝像機(jī)和錄音機(jī)。
DV類型II:數(shù)字視頻 AVI 文件包含原始的視頻和音頻信息,同時(shí)還包含作為 DV 音頻副本的單獨(dú)音軌。 DV 類型 II 比 DV 類型 I 兼容的軟件更加廣泛,因?yàn)榇蠖鄶?shù)使用 AVI 文件的程序都希望使用單獨(dú)的音軌。MKV
Matroska是一種新的多媒體[封裝格式],這個(gè)封裝格式可把多種不同編碼的視頻及16條或以上不同格式的音頻和語(yǔ)言不同的字幕封裝到一個(gè)Matroska Media檔內(nèi)。它也是其中一種一種[開(kāi)放源代碼]的多媒體封裝格式。Matroska同時(shí)還可以提供非常好的交互功能,而且比MPEG的方便、強(qiáng)大。副檔名:[mkv]
常用視頻格式&對(duì)應(yīng)文件格式
| 視頻封裝格式 | 視頻文件格式 |
|---|---|
| AVI(Audio Video Interactive) | AVI |
| WMV(Windows Media Video) | WMV |
| MPEG(Moving Picture Experts Group) | MPG MPEG VOB DAT 3GP MP4 |
| Matroska | MKV |
| Real Video | RM RMVB |
| AVI(Audio Video Interactive) | AVI |
| QuickTime File Formart | MOV |
| Flash Video | FLV |
視頻編解碼方式
視頻編碼
視頻編碼方式就是指通過(guò)特定的壓縮技術(shù),將某個(gè)視頻格式的文件轉(zhuǎn)換成另一種視頻格式文件的方式。視頻流傳輸中最為重要的編解碼標(biāo)準(zhǔn)有國(guó)際電聯(lián)的H.261、H.263、H.264,運(yùn)動(dòng)靜止圖像專家組的M-JPEG和國(guó)際標(biāo)準(zhǔn)化組織運(yùn)動(dòng)圖像專家組的MPEG系列標(biāo)準(zhǔn),此外在互聯(lián)網(wǎng)上被廣泛應(yīng)用的還有Real-Networks的RealVideo、微軟公司的WMV以及Apple公司的QuickTime等。
1.為什么要進(jìn)行視頻編碼?
- 未經(jīng)壓縮的數(shù)字視頻的數(shù)據(jù)量巨大
- 存儲(chǔ)困難
一張DVD只能存儲(chǔ)幾秒鐘的未壓縮數(shù)字視頻。 - 傳輸困難
1兆的帶寬傳輸一秒的數(shù)字電視視頻需要大約4分鐘。
2.為什么可以壓縮?
去除冗余信息
- 空間冗余:圖像相鄰像素之間有較強(qiáng)的相關(guān)性
- 時(shí)間冗余:視頻序列的相鄰圖像之間內(nèi)容相似
- 編碼冗余:不同像素值出現(xiàn)的概率不同
- 視覺(jué)冗余:人的視覺(jué)系統(tǒng)對(duì)某些細(xì)節(jié)不敏感
- 知識(shí)冗余:規(guī)律性的結(jié)構(gòu)可由先驗(yàn)知識(shí)和背景知識(shí)得到
3. 數(shù)據(jù)壓縮分類
- 無(wú)損壓縮(Lossless)
壓縮前解壓縮后圖像完全一致X=X'
壓縮比低(2:1~3:1)
例如:Winzip,JPEG-LS - 有損壓縮(Lossy)
壓縮前解壓縮后圖像不一致X≠X'
壓縮比高(10:1~20:1)
利用人的視覺(jué)系統(tǒng)的特性
例如:MPEG-2,H.264/AVC,AVS
4. 視頻編碼標(biāo)準(zhǔn)
編碼標(biāo)準(zhǔn)作用:
- 兼容:
不同廠家生產(chǎn)的編碼器壓縮的碼流能夠被不同廠家的解碼器解碼 - 高效:
標(biāo)準(zhǔn)編解碼器可以進(jìn)行批量生產(chǎn),節(jié)約成本。
主流的視頻編碼標(biāo)準(zhǔn):
- MPEG-2
- MPEG-4 Simple Profile
- H.264/AVC
- AVS
- VC-1
標(biāo)準(zhǔn)化組織:
- ITU:International Telecommunications Union
- VECG:Video Coding Experts Group
- ISO:International Standards Organization
- MPEG:Motion Picture Experts Group
常見(jiàn)視頻編碼方式
-
H.26X 系列,由國(guó)際電傳視訊聯(lián)盟遠(yuǎn)程通信標(biāo)準(zhǔn)化組織(ITU-T)主導(dǎo),包括 H.261、H.262、H.263、H.264、H.265
- H.261,主要用于老的視頻會(huì)議和視頻電話系統(tǒng)。是第一個(gè)使用的數(shù)字視頻壓縮標(biāo)準(zhǔn)。實(shí)質(zhì)上說(shuō),之后的所有的標(biāo)準(zhǔn)視頻編解碼器都是基于它設(shè)計(jì)的。
- H.262,等同于 MPEG-2 第二部分,使用在 DVD、SVCD 和大多數(shù)數(shù)字視頻廣播系統(tǒng)和有線分布系統(tǒng)中。
- H.263,主要用于視頻會(huì)議、視頻電話和網(wǎng)絡(luò)視頻相關(guān)產(chǎn)品。在對(duì)逐行掃描的視頻源進(jìn)行壓縮的方面,H.263 比它之前的視頻編碼標(biāo)準(zhǔn)在性能上有了較大的提升。尤其是在低碼率端,它可以在保證一定質(zhì)量的前提下大大的節(jié)約碼率。
- H.264,等同于 MPEG-4 第十部分,也被稱為高級(jí)視頻編碼(Advanced Video Coding,簡(jiǎn)稱 AVC),是一種視頻壓縮標(biāo)準(zhǔn),一種被廣泛使用的高精度視頻的錄制、壓縮和發(fā)布格式。該標(biāo)準(zhǔn)引入了一系列新的能夠大大提高壓縮性能的技術(shù),并能夠同時(shí)在高碼率端和低碼率端大大超越以前的諸標(biāo)準(zhǔn)。
- H.265,被稱為高效率視頻編碼(High Efficiency Video Coding,簡(jiǎn)稱 HEVC)是一種視頻壓縮標(biāo)準(zhǔn),是 H.264 的繼任者。HEVC 被認(rèn)為不僅提升圖像質(zhì)量,同時(shí)也能達(dá)到 H.264 兩倍的壓縮率(等同于同樣畫(huà)面質(zhì)量下比特率減少了 50%),可支持 4K 分辨率甚至到超高畫(huà)質(zhì)電視,最高分辨率可達(dá)到 8192×4320(8K 分辨率),這是目前發(fā)展的趨勢(shì)。
-
MPEG 系列,由國(guó)際標(biāo)準(zhǔn)組織機(jī)構(gòu)(ISO)下屬的運(yùn)動(dòng)圖象專家組(MPEG)開(kāi)發(fā)。
- MPEG-1 第二部分,主要使用在 VCD 上,有些在線視頻也使用這種格式。該編解碼器的質(zhì)量大致上和原有的 VHS 錄像帶相當(dāng)。
- MPEG-2 第二部分,等同于 H.262,使用在 DVD、SVCD 和大多數(shù)數(shù)字視頻廣播系統(tǒng)和有線分布系統(tǒng)中。
- MPEG-4 第二部分,可以使用在網(wǎng)絡(luò)傳輸、廣播和媒體存儲(chǔ)上。比起 MPEG-2 第二部分和第一版的 H.263,它的壓縮性能有所提高。
- MPEG-4 第十部分,等同于 H.264,是這兩個(gè)編碼組織合作誕生的標(biāo)準(zhǔn)。
視頻編解碼方式 和 視頻封裝格式 的關(guān)系
可以把「視頻封裝格式」看做是一個(gè)裝著視頻、音頻、「視頻編解碼方式」等信息的容器。一種「視頻封裝格式」可以支持多種「視頻編解碼方式」,比如:QuickTime File Format(.MOV) 支持幾乎所有的「視頻編解碼方式」,MPEG(.MP4) 也支持相當(dāng)廣的「視頻編解碼方式」。當(dāng)我們看到一個(gè)視頻文件名為 test.mov 時(shí),我們可以知道它的「視頻文件格式」是 .mov,也可以知道它的視頻封裝格式是 QuickTime File Format,但是無(wú)法知道它的「視頻編解碼方式」。那比較專業(yè)的說(shuō)法可能是以 A/B 這種方式,A 是「視頻編解碼方式」,B 是「視頻封裝格式」。比如:一個(gè) H.264/MOV 的視頻文件,它的封裝方式就是 QuickTime File Format,編碼方式是 H.264
直播/小視頻中的編碼格式
視頻編碼格式
- H264編碼的優(yōu)勢(shì):
- 低碼率
- 高質(zhì)量的圖像
- 容錯(cuò)能力強(qiáng)
- 網(wǎng)絡(luò)適應(yīng)性強(qiáng)
總結(jié): H264最大的優(yōu)勢(shì),具有很高的數(shù)據(jù)壓縮比率,在同等圖像質(zhì)量下,H264的壓縮比是MPEG-2的2倍以上,MPEG-4的1.5~2倍.
舉例: 原始文件的大小如果為88GB,采用MPEG-2壓縮標(biāo)準(zhǔn)壓縮后變成3.5GB,壓縮比為25∶1,而采用H.264壓縮標(biāo)準(zhǔn)壓縮后變?yōu)?79MB,從88GB到879MB,H.264的壓縮比達(dá)到驚人的102∶1
-
音頻編碼格式:
AAC是目前比較熱門(mén)的有損壓縮編碼技術(shù),并且衍生了LC-AAC,HE-AAC,HE-AAC v2 三種主要編碼格式.
LC-AAC 是比較傳統(tǒng)的AAC,主要應(yīng)用于中高碼率的場(chǎng)景編碼(>= 80Kbit/s)*
HE-AAC 主要應(yīng)用于低碼率場(chǎng)景的編碼(<= 48Kbit/s)
優(yōu)勢(shì):在小于128Kbit/s的碼率下表現(xiàn)優(yōu)異,并且多用于視頻中的音頻編碼
適合場(chǎng)景:于128Kbit/s以下的音頻編碼,多用于視頻中的音頻軌的編碼
H264碼流
組成H264碼流的結(jié)構(gòu)中 包含以下幾部分 ,從大到小排序依次是
H264視頻序列,圖像,片組,片,NALU,宏塊 ,像素。
類似 地球 國(guó)家 城市 鎮(zhèn) 村落

H264編碼分層
- NAL層:(Network Abstraction Layer,視頻數(shù)據(jù)網(wǎng)絡(luò)抽象層): 它的作用是H264只要在網(wǎng)絡(luò)上傳輸,在傳輸?shù)倪^(guò)程每個(gè)包以太網(wǎng)是1500字節(jié),而H264的幀往往會(huì)大于1500字節(jié),所以要進(jìn)行拆包,將一個(gè)幀拆成多個(gè)包進(jìn)行傳輸,所有的拆包或者組包都是通過(guò)NAL層去處理的。
- VCL層:(Video Coding Layer,視頻數(shù)據(jù)編碼層): 對(duì)視頻原始數(shù)據(jù)進(jìn)行壓縮
H264的傳輸
-
H264是一種碼流 類似與一種不見(jiàn)頭,也不見(jiàn)尾的一條河流。如何從和流中取到自己想要的數(shù)據(jù)呢,在H264的標(biāo)磚中有這樣的一個(gè)封裝格式叫做"Annex-B"的字節(jié)流格式。 它是H264編碼的主要字節(jié)流格式。幾乎市面上的編碼器是以這種格式進(jìn)行輸出的。起始碼0x 00 00 00 01 或者 0x 00 00 01 作為分隔符。
NAL Unit
編碼結(jié)構(gòu)

切片頭:包含了一組片的信息,比如片的數(shù)量,順序等等
H264碼流分層結(jié)構(gòu)圖

顏色模型
顏色模型指的是某個(gè)[三維]顏色空間中的一個(gè)可見(jiàn)光子集,它包含某個(gè)色彩域的所有色彩。一般而言,任何一個(gè)色彩域都只是可見(jiàn)光的子集,任何一個(gè)顏色模型都無(wú)法包含所有的可見(jiàn)光。常見(jiàn)的顏色模型有RGB CIECMY/CMYK、(HSK NTSC、YcbCr、HSV 等)
RGB顏色模型

在 RGB 模型中每種顏色需要 3 個(gè)數(shù)字,分別表示 R、G、B,比如 (255, 0, 0) 表示紅色,通常一個(gè)數(shù)字占用 1 字節(jié),那么表示一種顏色需要 24 bits。那么有沒(méi)有更高效的顏色模型能夠用更少的 bit 來(lái)表示顏色呢?
現(xiàn)在我們假設(shè)我們定義一個(gè)「亮度(Luminance)」的概念來(lái)表示顏色的亮度,那它就可以用含 R、G、B 的表達(dá)式表示為:
Y = kr*R + kg*G + kb*B
Y 即「亮度」,kr、kg、kb 即 R、G、B 的權(quán)重值。
這時(shí),我們可以定義一個(gè)「色度(Chrominance)」的概念來(lái)表示顏色的差異:
Cr = R – Y
Cg = G – Y
Cb = B – Y
Cr、Cg、Cb 分別表示在 R、G、B 上的色度分量。上述模型就是 YCbCr 顏色模型基本原理。
YCbCr 是屬于 YUV 家族的一員,是在計(jì)算機(jī)系統(tǒng)中應(yīng)用最為廣泛的顏色模型,就比如在本文所講的視頻領(lǐng)域。在 YUV 中 Y 表示的是「亮度」,也就是灰階值,U 和 V 則是表示「色度」。
YUV 的關(guān)鍵是在于它的亮度信號(hào) Y 和色度信號(hào) U、V 是分離的。那就是說(shuō)即使只有 Y 信號(hào)分量而沒(méi)有 U、V 分量,我們?nèi)匀豢梢员硎境鰣D像,只不過(guò)圖像是黑白灰度圖像。在YCbCr 中 Y 是指亮度分量,Cb 指藍(lán)色色度分量,而 Cr 指紅色色度分量。
現(xiàn)在我們從 ITU-R BT.601-7 標(biāo)準(zhǔn)中拿到推薦的相關(guān)系數(shù),就可以得到 YCbCr 與 RGB 相互轉(zhuǎn)換的公式
Y = 0.299R + 0.587G + 0.114B
Cb = 0.564(B - Y)
Cr = 0.713(R - Y)
R = Y + 1.402Cr
G = Y - 0.344Cb - 0.714Cr
B = Y + 1.772Cb
這樣對(duì)于 YCbCr 這個(gè)顏色模型我們就有個(gè)初步認(rèn)識(shí)了,但是我們會(huì)發(fā)現(xiàn),這里 YCbCr 也仍然用了 3 個(gè)數(shù)字來(lái)表示顏色啊,有節(jié)省 bit 嗎?為了回答這個(gè)問(wèn)題,我們來(lái)結(jié)合視頻中的圖像和圖像中的像素表示來(lái)說(shuō)明
-
假設(shè)圖片有如下像素組成
pix -
一副圖片就是一個(gè)像素陣列.每個(gè)像素的 3 個(gè)分量的信息是完整的,YCbCr 4:4:4。
4:4:4 - 上圖,做了更多的省略,但是對(duì)圖片質(zhì)量的影響卻不會(huì)太大.YCbCr4:2:0



