Daily AVFoundation - 視頻基礎(chǔ)

視頻

  • 什么是視頻?
    視頻其實(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]、wmvhd

  • MPEG
    [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

    1. H.261,主要用于老的視頻會(huì)議和視頻電話系統(tǒng)。是第一個(gè)使用的數(shù)字視頻壓縮標(biāo)準(zhǔn)。實(shí)質(zhì)上說(shuō),之后的所有的標(biāo)準(zhǔn)視頻編解碼器都是基于它設(shè)計(jì)的。
    2. H.262,等同于 MPEG-2 第二部分,使用在 DVD、SVCD 和大多數(shù)數(shù)字視頻廣播系統(tǒng)和有線分布系統(tǒng)中。
    3. H.263,主要用于視頻會(huì)議、視頻電話和網(wǎng)絡(luò)視頻相關(guān)產(chǎn)品。在對(duì)逐行掃描的視頻源進(jìn)行壓縮的方面,H.263 比它之前的視頻編碼標(biāo)準(zhǔn)在性能上有了較大的提升。尤其是在低碼率端,它可以在保證一定質(zhì)量的前提下大大的節(jié)約碼率。
    4. 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)。
    5. 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ā)。

    1. MPEG-1 第二部分,主要使用在 VCD 上,有些在線視頻也使用這種格式。該編解碼器的質(zhì)量大致上和原有的 VHS 錄像帶相當(dāng)。
    2. MPEG-2 第二部分,等同于 H.262,使用在 DVD、SVCD 和大多數(shù)數(shù)字視頻廣播系統(tǒng)和有線分布系統(tǒng)中。
    3. MPEG-4 第二部分,可以使用在網(wǎng)絡(luò)傳輸、廣播和媒體存儲(chǔ)上。比起 MPEG-2 第二部分和第一版的 H.263,它的壓縮性能有所提高。
    4. 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) 村落
image.png
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)
編碼結(jié)構(gòu)

切片頭:包含了一組片的信息,比如片的數(shù)量,順序等等

H264碼流分層結(jié)構(gòu)圖
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顏色模型

在 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
4.2.0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容