視頻解碼基礎(chǔ)
一、封裝格式
? 我們播放的視頻文件一般都是用一種封裝格式封裝起來的,封裝格式的作用是什么呢?一般視頻文件里不光有視頻,還有音頻,封裝格式的作用就是把視頻和音頻打包起來。 所以我們先要解封裝格式,看有哪些視頻流和哪些音頻流,此時的音頻流和視頻流都還是壓縮數(shù)據(jù),不能直接用于顯示的,這就需要解碼。下面是播放一個視頻文件時的流程圖。
FFmpeg 視頻文件 是一個容器 (視頻流(H264) 音頻流(aac))
二、視頻文件封裝格式
封裝格式(也叫容器),就是將已經(jīng)編碼壓縮好的視頻軌和音頻軌按照一定的格式放到一個文件中,也就是說僅僅是一個外殼,或者大家把它當(dāng)成一個放視頻軌和音頻軌的文件夾也可以。說得通俗點(diǎn),視頻軌相當(dāng)于飯,而音頻軌相當(dāng)于菜,封裝格式就是一個碗,或者一個鍋,用來盛放飯菜的容器。 下面是幾種常用的 視頻文件后綴類型 與其相對應(yīng)的 封裝格式。
視頻文件格式 | 視頻封裝格式 |
---|---|
.avi | AVI(Audio Video Interleaved) |
.wmv、.asf | WMV(Windows Media Video) |
.mpg、.mpeg、.vob、.dat、.3gp、.mp4 | MPEG(Moving Picture Experts Group) |
.mkv | Matroska |
.rm、.rmvb | Real Video |
.mov | QuickTime File Format |
.flv | Flash Video |
三、 音視頻編碼方式簡介
1、視頻編碼方式
- 視頻編碼的作用: 將視頻像素?cái)?shù)據(jù)(RGB,YUV 等)壓縮成視頻碼流,從而降低視頻的數(shù)據(jù)量。
HEVC(H.265) | MPEG/ITU-T | 2013 | 研發(fā)中 |
---|---|---|---|
名稱 | 推出機(jī)構(gòu) | 推出時間 | 目前使用領(lǐng)域 |
H.264 | MPEG/ITU-T | 2003 | 各個領(lǐng)域 |
MPEG4 | MPEG | 2001 | 不溫不火 |
MPEG2 | MPEG | 1994 | 數(shù)字電視 |
VP9 | 2013 | 研發(fā)中 | |
VP8 | 2008 | 不普及 | |
VC-1 | Microsoft Inc. | 2006 | 微軟平臺 |
四, 音頻編碼方式
音頻編碼的作用: 將音頻采樣數(shù)據(jù)(PCM 等)壓縮成音頻碼流,從而降低音頻的數(shù)據(jù)量。 常用的音頻編碼方式有以下幾種:
名稱 | 推出機(jī)構(gòu) | 推出時間 | 目前使用領(lǐng)域 |
---|---|---|---|
AAC | MPEG | 1997 | 各個領(lǐng)域(新) |
MP3 | MPEG | 1993 | 各個領(lǐng)域(舊) |
WMV | Microsoft Inc. | 1999 | 微軟平臺 |
AC-3 | Dolby Inc. | 1992 | 電影 |
一、視頻封裝格式
我們常見的視頻封裝格式有:.mov、.avi、.mpg、.vob、.mkv、.rm、.rmvb
等等。為什么會有這么多種不同的文件格式?那是因?yàn)?strong>它們通過不同的方式實(shí)現(xiàn)了視頻這件事情,至于這個不同在哪里,那就需要了解一下接下來要說的**「視頻封裝格式」**這個概念了。
1.1 視頻封裝格式
視頻封裝格式,簡稱視頻格式,相當(dāng)于一種存放視頻信息的容器
,它里面包含了視頻信息
、音頻信息
和相關(guān)的配置信息
(例如:視頻和音頻的關(guān)聯(lián)信息、如何解碼等)。視頻封裝格式最直接的反映就是視頻文件格式,如下表 ??
視頻文件格式 | 視頻封裝格式 | 釋義 |
---|---|---|
.avi | AVI(Audio Video Interleave) | 圖像質(zhì)量好,但體積過于龐大,壓縮標(biāo)準(zhǔn)不統(tǒng)一,存在高低版本兼容問題。 |
.wmv | WMV(Windows Media Video) | 可邊下載邊播放,很適合網(wǎng)上播放和傳輸 |
.mpg .mpeg .mpe .dat .vob .asf .3gp .mp4 | MPEG(Moving Picture Experts Group) | 由運(yùn)動圖像專家組制定的視頻格式,有三個壓縮標(biāo)準(zhǔn),分別是 MPEG-1、MPEG-2、和 MPEG-4,它為了播放流式媒體的高質(zhì)量視頻而專門設(shè)計(jì)的,以求使用最少的數(shù)據(jù)獲得最佳的圖像質(zhì)量。 |
.mkv | Matroska | 一種新的視頻封裝格式,它可將多種不同編碼的視頻及 16 條以上不同格式的音頻和不同語言的字幕流封裝到一個 Matroska Media 文件當(dāng)中。 |
.rm、.rmvb | Real Video | Real Networks 公司所制定的音頻視頻壓縮規(guī)范稱為 Real Media。用戶可以使用 RealPlayer 根據(jù)不同的網(wǎng)絡(luò)傳輸速率制定出不同的壓縮比率,從而實(shí)現(xiàn)在低速率的網(wǎng)絡(luò)上進(jìn)行影像數(shù)據(jù)實(shí)時傳送和播放。 |
.mov | QuickTime File Format | Apple 公司開發(fā)的一種視頻格式,默認(rèn)的播放器是蘋果的 QuickTime。這種封裝格式具有較高的壓縮比率和較完美的視頻清晰度等特點(diǎn),并可以保存 alpha 通道。 |
.flv | Flash Video | 由 Adobe Flash 延伸出來的一種網(wǎng)絡(luò)視頻封裝格式。這種格式被很多視頻網(wǎng)站所采用。 |
1.2 容器
將已經(jīng)編碼壓縮好
的視頻數(shù)據(jù)和音頻數(shù)據(jù)
按照一定的格式
放到一個文件
中,這個文件可以稱為容器
。當(dāng)然可以理解為這只是一個外殼
。
通常,除了音頻數(shù)據(jù)和視頻數(shù)據(jù)外,還會存放一些視頻同步的元數(shù)據(jù)
:例如字幕,這種多數(shù)據(jù)會給不同的程序來處理,但是在傳輸和存儲的時候,又是被綁定在一起的。
二、常用視頻和音頻編碼格式介紹
2.1 視頻編解碼
視頻編解碼的過程–>對數(shù)字視頻進(jìn)行壓縮或解壓縮
的過程。
2.2 常見的視頻編解碼方式
-
.H26x
系列 由國際電傳視訊聯(lián)盟遠(yuǎn)程通信標(biāo)準(zhǔn)化組織(ITU-T)主導(dǎo),包括H.261、H.262、H.263、H.264、H.265
。-
.H261
用于老的視頻會議或視頻電話系統(tǒng),之后的所有標(biāo)準(zhǔn)都基于它設(shè)計(jì)的。 -
.H262
等同于 MPEG-2 第二部分,使用在 DVD、SVCD 和大多數(shù)數(shù)字視頻廣播系統(tǒng)和有線分布系統(tǒng)中。 -
.H263
主要用于視頻會議、視頻電話和網(wǎng)絡(luò)視頻相關(guān)產(chǎn)品。比它之前的視頻編碼標(biāo)準(zhǔn)在性能上有了較大的提升。尤其是在低碼率端,它可以在保證一定質(zhì)量的前提下大大的節(jié)約碼率。 -
.H264
等同于 MPEG-4 第十部分,也被稱為高級視頻編碼(Advanced Video Coding,簡稱 AVC),是一種視頻壓縮標(biāo)準(zhǔn),一種被廣泛使用的高精度視頻的錄制、壓縮和發(fā)布格式。該標(biāo)準(zhǔn)引入了一系列新的能夠大大提高壓縮性能的技術(shù),并能夠同時在高碼率端和低碼率端大大超越以前的諸標(biāo)準(zhǔn)。 -
.H265
高效率視頻編碼(High Efficiency Video Coding,簡稱 HEVC)是一種視頻壓縮標(biāo)準(zhǔn),是 H.264 的繼任者。HEVC 被認(rèn)為不僅提升圖像質(zhì)量,同時也能達(dá)到 H.264 兩倍的壓縮率(等同于同樣畫面質(zhì)量下比特率減少了 50%),可支持 4K 分辨率甚至到超高畫質(zhì)電視,最高分辨率可達(dá)到 8192×4320(8K 分辨率),這是目前發(fā)展的趨勢。
-
-
MPEG
系列 由國際標(biāo)準(zhǔn)組織機(jī)構(gòu)(ISO)下屬的運(yùn)動圖象專家組(MPEG)開發(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ò)傳輸、廣播和媒體存儲上。比起MPEG-2
第二部分和第一版的H.263
,它的壓縮性能有所提高。 -
MPEG-4
第十部分,等同于H.264
,是這兩個編碼組織合作誕生的標(biāo)準(zhǔn)。
-
不選擇H265的原因
-
iOS11.0
之后才支持H265
。 - 相對于
H264
,H265
對CPU造成的負(fù)荷更大,當(dāng)然CPU發(fā)熱更嚴(yán)重。
2.3「編解碼方式」和「封裝格式」的關(guān)系
「視頻封裝格式」= 視頻 + 音頻 +視頻編解碼方式 等信息的容器。
一種「視頻封裝格式」可以支持多種「視頻編解碼方式」。比如:QuickTime File Format(.MOV) 支持幾乎所有的「視頻編解碼方式」,MPEG(.MP4) 也支持相當(dāng)廣的「視頻編解碼方式」。
比較專業(yè)的說法可能是以 A/B 這種方式,A 是「視頻編解碼方式」,B 是「視頻封裝格式」。比如:一個 H.264/MOV 的視頻文件,它的封裝方式就是 QuickTime File Format,編碼方式是 H.264。
2.4 音頻編解碼方式
經(jīng)常使用的音頻編碼方式有????
-
AAC
,英文全稱Advanced Audio Coding
,是由 Fraunhofer IIS、杜比實(shí)驗(yàn)室、AT&T、Sony等公司共同開發(fā),在 1997 年推出的基于 MPEG-2 的音頻編碼技術(shù)。2000 年,MPEG-4 標(biāo)準(zhǔn)出現(xiàn)后,AAC 重新集成了其特性,加入了 SBR 技術(shù)和 PS 技術(shù),為了區(qū)別于傳統(tǒng)的 MPEG-2 AAC 又稱為 MPEG-4 AAC。 -
MP3
,英文全稱MPEG-1 or MPEG-2 Audio Layer III
,是當(dāng)曾經(jīng)非常流行的一種數(shù)字音頻編碼和有損壓縮格式,它被設(shè)計(jì)來大幅降低音頻數(shù)據(jù)量。它是在 1991 年,由位于德國埃爾朗根的研究組織 Fraunhofer-Gesellschaft 的一組工程師發(fā)明和標(biāo)準(zhǔn)化的。MP3 的普及,曾對音樂產(chǎn)業(yè)造成極大的沖擊與影響。 -
WMA
,英文全稱Windows Media Audio
,由微軟公司開發(fā)的一種數(shù)字音頻壓縮格式,本身包括有損和無損壓縮格式。
2.5 直播/小視頻中的編碼格式
-
視頻編碼格式–>
H264
,低碼率,高質(zhì)量圖像,容錯能力強(qiáng),網(wǎng)絡(luò)適應(yīng)強(qiáng),具有很高的數(shù)據(jù)壓縮比,能達(dá)到驚人的102:1 -
音頻編碼格式–> AAC,目前比較熱門的有損壓縮編碼技術(shù),在
小于128Kbit/s 的碼率下表現(xiàn)優(yōu)異,并且多用于視頻中的音頻編碼。并且衍生了
LC-AAC,HE-AAC,HE-AAC v2三種主要編碼格式.
- LC-AAC 是比較傳統(tǒng)的AAC,主要應(yīng)用于中
高碼率
的場景編碼(>= 80Kbit/s
) - HE-AAC 主要應(yīng)用于
低碼率
場景的編碼(<= 48Kbit/s
)
- LC-AAC 是比較傳統(tǒng)的AAC,主要應(yīng)用于中
2.6 RGB & YUV
通常我們采用RGB模型
來表示顏色
,RGB模型中,每種顏色需要3個數(shù)字分別表示R、G、B
,每個數(shù)字占用1個bit字節(jié)
,這樣總共需要24bits
。
那么有沒有更高效
的顏色模型用更少的bit
來表示顏色呢?–>YUV,Y表示亮度,也是灰階值,U和V表示色度分量。
現(xiàn)在我們假設(shè)我們定義一個 「亮度(Luminance)」 的概念來表示顏色的亮度,那它就可以用含 R、G、B 的表達(dá)式表示為??
Y = kr*R + kg*G + kb*B
Y 即「亮度」,kr、kg、kb 即 R、G、B 的權(quán)重值。
這時,我們可以定義一個 「色度(Chrominance)」 的概念來表示顏色的差異??
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)鍵是在于它的亮度信號 Y
和色度信號 U、V
是分離
的,那就是說即使只有 Y 信號分量而沒有 U、V 分量,我們?nèi)匀豢梢员硎境鰣D像,只不過圖像是黑白灰度
圖像。在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
至此,我們對 YCbCr
這個顏色模型我們就有個初步認(rèn)識了,但是細(xì)心的你會發(fā)現(xiàn),這里 YCbCr
也仍然用了 3 個數(shù)字
來表示顏色啊,有節(jié)省 bit
嗎?請看下圖 ????
- 假設(shè)圖片有如下像素組成
- 一副圖片就是一個像素陣列.每個像素的 3 個分量的信息是完整的,
YCbCr 4:4:4
。
- 下圖中,對于每個像素點(diǎn)都保留「亮度」值,但是省略每行中偶素位像素點(diǎn)的「色度」值,從而節(jié)省了 bit。
YCbCr4:2:2
- 下圖,做了更多的省略,但是對圖片質(zhì)量的影響卻不會太大.
YCbCr4:2:0
文章來源:http://www.zghlxwxcb.cn/news/detail-607652.html
所以,目前90%以上的直播啊,小視頻啊都采用的這種YCbCr4:2:0
。文章來源地址http://www.zghlxwxcb.cn/news/detail-607652.html
到了這里,關(guān)于音視頻——封裝格式原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!