本章知識(shí)點(diǎn)一覽:
- 視頻播放原理
- 視頻文件封裝格式
- 音視頻編碼方式簡(jiǎn)介
一、視頻播放器原理:
我們播放的視頻文件一般都是用一種封裝格式封裝起來(lái)的,封裝格式的作用是什么呢?一般視頻文件里不光有視頻,還有音頻,封裝格式的作用就是把視頻和音頻打包起來(lái)。
所以我們先要解封裝格式,看有哪些視頻流和哪些音頻流,此時(shí)的音頻流和視頻流都還是壓縮數(shù)據(jù),不能直接用于顯示的,這就需要解碼。下面是播放一個(gè)視頻文件時(shí)的流程圖。

根據(jù)上面流程圖中的流程,我們從上至下一步步的來(lái)了解下每步驟的原理和實(shí)現(xiàn)方式。先來(lái)看下 視頻封裝格式。
二、視頻文件封裝格式
封裝格式(也叫容器),就是將已經(jīng)編碼壓縮好的視頻軌和音頻軌按照一定的格式放到一個(gè)文件中,也就是說(shuō)僅僅是一個(gè)外殼,或者大家把它當(dāng)成一個(gè)放視頻軌和音頻軌的文件夾也可以。說(shuō)得通俗點(diǎn),視頻軌相當(dāng)于飯,而音頻軌相當(dāng)于菜,封裝格式就是一個(gè)碗,或者一個(gè)鍋,用來(lái)盛放飯菜的容器。
下面是幾種常用的 視頻文件后綴類型 與其相對(duì)應(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 |
下面詳細(xì)介紹幾個(gè)視頻的封裝格式:
1、AVI 格式,對(duì)應(yīng)的文件格式為 .avi,全稱 Audio Video Interleaved,是由 Microsoft 公司于 1992 年推出。這種視頻格式的優(yōu)點(diǎn)是圖像質(zhì)量好,無(wú)損 AVI 可保存 alpha 通道。缺點(diǎn)是體積過(guò)于龐大,并且壓縮標(biāo)準(zhǔn)不統(tǒng)一,存在較多的高低版本兼容問(wèn)題。
2、DV-AVI 格式,對(duì)應(yīng)的文件格式為 .avi,英文全稱 Digital Video Format,是由索尼、松下、JVC 等多家廠商聯(lián)合提出的一種家用數(shù)字視頻格式。常見(jiàn)的數(shù)碼攝像機(jī)就是使用這種格式記錄視頻數(shù)據(jù)的。它可以通過(guò)電腦的 IEEE 1394 端口傳輸視頻數(shù)據(jù)到電腦,也可以將電腦中編輯好的的視頻數(shù)據(jù)回錄到數(shù)碼攝像機(jī)中。
3、WMV 格式,對(duì)應(yīng)的文件格式是 .wmv、.asf,英文全稱 Windows Media Video,是微軟推出的一種采用獨(dú)立編碼方式并且可以直接在網(wǎng)上實(shí)時(shí)觀看視頻節(jié)目的文件壓縮格式。在同等視頻質(zhì)量下,WMV 格式的文件可以邊下載邊播放,因此很適合在網(wǎng)上播放和傳輸。
4、MPEG 格式,對(duì)應(yīng)的文件格式有 .mpg、.mpeg、.mpe、.dat、.vob、.asf、.3gp、.mp4 等等,英文全稱 Moving Picture Experts Group,是由運(yùn)動(dòng)圖像專家組制定的視頻格式,該專家組于 1988 年組建,專門負(fù)責(zé)視頻和音頻標(biāo)準(zhǔn)制定,其成員都是視頻、音頻以及系統(tǒng)領(lǐng)域的技術(shù)專家。MPEG 格式目前有三個(gè)壓縮標(biāo)準(zhǔn),分別是 MPEG-1、MPEG-2、和 MPEG-4。MPEG-4 是現(xiàn)在用的比較多的視頻封裝格式,它為了播放流式媒體的高質(zhì)量視頻而專門設(shè)計(jì)的,以求使用最少的數(shù)據(jù)獲得最佳的圖像質(zhì)量。
5、Matroska 格式,對(duì)應(yīng)的文件格式是 .mkv,Matroska 是一種新的視頻封裝格式,它可將多種不同編碼的視頻及 16 條以上不同格式的音頻和不同語(yǔ)言的字幕流封裝到一個(gè) Matroska Media 文件當(dāng)中。
6、Real Video 格式,對(duì)應(yīng)的文件格式是 .rm、.rmvb,是 Real Networks 公司所制定的音頻視頻壓縮規(guī)范稱為 Real Media。用戶可以使用 RealPlayer 根據(jù)不同的網(wǎng)絡(luò)傳輸速率制定出不同的壓縮比率,從而實(shí)現(xiàn)在低速率的網(wǎng)絡(luò)上進(jìn)行影像數(shù)據(jù)實(shí)時(shí)傳送和播放。
7、QuickTime File Format 格式,對(duì)應(yīng)的文件格式是 .mov,是 Apple 公司開(kāi)發(fā)的一種視頻格式,默認(rèn)的播放器是蘋果的 QuickTime。這種封裝格式具有較高的壓縮比率和較完美的視頻清晰度等特點(diǎn),并可以保存 alpha 通道。
8、Flash Video 格式,對(duì)應(yīng)的文件格式是 .flv,是由 Adobe Flash 延伸出來(lái)的一種網(wǎng)絡(luò)視頻封裝格式。這種格式被很多視頻網(wǎng)站所采用。
三、 音視頻編碼方式簡(jiǎn)介
1、視頻編碼方式
-
視頻編碼的作用:
將視頻像素?cái)?shù)據(jù)(RGB,YUV 等)壓縮成視頻碼流,從而降低視頻的數(shù)據(jù)量。
| 名稱 | 推出機(jī)構(gòu) | 推出時(shí)間 | 目前使用領(lǐng)域 |
|---|---|---|---|
| HEVC(H.265) | MPEG/ITU-T | 2013 | 研發(fā)中 |
| H.264 | MPEG/ITU-T | 2003 | 各個(gè)領(lǐng)域 |
| MPEG4 | MPEG | 2001 | 不溫不火 |
| MPEG2 | MPEG | 1994 | 數(shù)字電視 |
| VP9 | 2013 | 研發(fā)中 | |
| VP8 | 2008 | 不普及 | |
| VC-1 | Microsoft Inc. | 2006 | 微軟平臺(tái) |
(1)、H.26X 系列
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ì)。
(2)、MPEG 系列
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)。
2、音頻編碼方式
音頻編碼的作用:
將音頻采樣數(shù)據(jù)(PCM 等)壓縮成音頻碼流,從而降低音頻的數(shù)據(jù)量。
常用的音頻編碼方式有以下幾種:
| 名稱 | 推出機(jī)構(gòu) | 推出時(shí)間 | 目前使用領(lǐng)域 |
|---|---|---|---|
| AAC | MPEG | 1997 | 各個(gè)領(lǐng)域(新) |
| MP3 | MPEG | 1993 | 各個(gè)領(lǐng)域(舊) |
| WMV | Microsoft Inc. | 1999 | 微軟平臺(tái) |
| AC-3 | Dolby Inc. | 1992 | 電影 |
(1)MP3
MP3,英文全稱 MPEG-1 or MPEG-2 Audio Layer III,是曾經(jīng)非常流行的一種數(shù)字音頻編碼和有損壓縮格式,它被設(shè)計(jì)來(lái)大幅降低音頻數(shù)據(jù)量。它是在 1991 年,由位于德國(guó)埃爾朗根的研究組織 Fraunhofer-Gesellschaft 的一組工程師發(fā)明和標(biāo)準(zhǔn)化的。MP3 的普及,曾對(duì)音樂(lè)產(chǎn)業(yè)造成極大的沖擊與影響。
(2)AAC
AAC,英文全稱 Advanced Audio Coding,是由 Fraunhofer IIS、杜比實(shí)驗(yàn)室、AT&T、Sony 等公司共同開(kāi)發(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。
AAC 比 MP3 有更高的壓縮比,同樣大小的音頻文件,AAC 的音質(zhì)更高。
(3)WMA
WMA,英文全稱 Windows Media Audio,由微軟公司開(kāi)發(fā)的一種數(shù)字音頻壓縮格式,本身包括有損和無(wú)損壓縮格式。
四、 視頻像素?cái)?shù)據(jù)
1、視頻像素?cái)?shù)據(jù)簡(jiǎn)介
- 視頻像素?cái)?shù)據(jù)作用:
保存了屏幕上每個(gè)像素點(diǎn)的像素值。- 格式:
常見(jiàn)的像素格式有 RGB24,RGB32,YUV420P,YUV422P,YUV444P 等。壓縮編碼中一般使用的是 YUV 格式的像素?cái)?shù)據(jù),最常見(jiàn)的格式為 YUV420P。- 特點(diǎn):視頻像素?cái)?shù)據(jù)體積很大,一個(gè) 1 小時(shí)電影的RGB24格式的數(shù)據(jù)體積為:
3600 * 25 * 1920 * 1080 * 3 = 559.872GByte
(PS:這里嘉定頻率為 25Hz,取樣精度 8bit)
2、顏色模型
(1)RGB 顏色編碼

我們開(kāi)發(fā)場(chǎng)景中使用最多的應(yīng)該是 RGB 模型,R、G、B 分別代表了紅、綠、藍(lán),這三種顏色稱為三原色,將它們以不同的比例相加,可以產(chǎn)生任何顏色。
RGB 圖像中,每個(gè)像素點(diǎn)都有紅、綠、藍(lán)三個(gè)原色,其中每種原色都占用 8 bit,也就是一個(gè)字節(jié),那么一個(gè)像素點(diǎn)也就占用 24 bit,也就是三個(gè)字節(jié)。
那么一張 1280 * 720 大小的圖片,就占用 1280 * 720 * 3 / 1024 / 1024 = 2.63 MB 存儲(chǔ)空間。有沒(méi)有更高效的顏色模型能夠用更少的 bit 來(lái)表示顏色呢?那就是 YUV 顏色編碼。
(2)YUV (YCbCr)顏色編碼
相關(guān)實(shí)驗(yàn)表明,人眼對(duì)亮度敏感而對(duì)色度不敏感。因而可以將亮度信息和色度信息分離,并對(duì)色度信息采用更“狠”一點(diǎn)的壓縮方案,從而提高壓縮效率。
YUV 顏色編碼采用的是 明亮度 Y 和 色度 UV 來(lái)指定像素的顏色。
“Y”表示明亮度(Luminance 或 Luma),也就是灰階值。
“U” 和 “V” 表示的則是色度(Chrominance 或Chroma),作用是描述影像色調(diào)和飽和度。
和 RGB 表示圖像類似,每個(gè)像素點(diǎn)都包含 Y、U、V 分量。但是它的 Y 和 UV 分量是可分離的,沒(méi)有 UV 分量一樣可以顯示完整的圖像,但是是黑白的。
- YCbCr 顏色空間是 YUV 的國(guó)際標(biāo)準(zhǔn)化變種,在數(shù)字電視和圖像壓縮(比如JPEG)方面都有應(yīng)用。
YCbCr 其實(shí)是 YUV 經(jīng)過(guò)縮放和偏移的翻版。其中 Y 與 YUV 中的 Y 含義一致, Cb,Cr 同樣都指色彩, 只是在表示方法上不同而已。在 YUV 家族中, YCbCr 是在計(jì)算機(jī)系統(tǒng)中應(yīng)用最多的成員,其應(yīng)用領(lǐng)域很廣泛,JPEG、MPEG 均采用此格式。一般人們所講的 YUV 大多是指YCbCr。
Cb:反映的是 RGB 輸入信號(hào)藍(lán)色部分與 RGB 信號(hào)亮度值之間的差異。
Cr:反映了 RGB 輸入信號(hào)紅色部分與 RGB 信號(hào)亮度值之間的差異。
YCbCr.png- RGB 轉(zhuǎn)換為 Ycbcr 公式
Y = 0.257*R+0.564*G+0.098*B+16 Cb = -0.148*R-0.291*G+0.439*B+128 Cr = 0.439*R-0.368*G-0.071*B+128
- Ycbcr 轉(zhuǎn)換為 RGB 公式
R = 1.164*(Y-16)+1.596*(Cr-128) G = 1.164*(Y-16)-0.392*(Cb-128)-0.813*(Cr-128) B = 1.164*(Y-16)+2.017*(Cb-128)
(3)YUV 采樣格式
為節(jié)省帶寬,大多數(shù) YUV 格式平均使用的每像素位數(shù)都少于24位。主要的抽樣(subsample)格式有 YCbCr4:2:0、YCbCr4:2:2、YCbCr4:1:1 和 YCbCr4:4:4。

4:2:0
4:2:0 是目前用的畢竟廣泛的一種采樣格式。4:2:0 表示 2:1 的水平取樣,垂直 2:1 采樣。比 RGB 小了二分之一。我們以4:2:0 為例詳細(xì)看一下這種采樣格式。
從上圖中可以看 YUV4:2:0 先存儲(chǔ)個(gè)整張圖像的 Y 信息,然后存儲(chǔ) U 信息,最后存儲(chǔ) V 信息。但存儲(chǔ)的比例是不同的,可以看出是每存儲(chǔ)兩行 Y,才會(huì)存儲(chǔ)半行 U 和半行 V。YUV420.png
YUV4-2-0.png4:4:4
4:4:4 表示完全取樣。和 RGB 大小一樣。
YUV4-4-4.png4:2:2 表示 2:1 的水平取樣,垂直完全采樣。比 RGB 小了三分之一。
YUV4-2-2.png
以上的總結(jié)參考了并部分摘抄了以下文章,非常感謝以下作者的分享?。?br>
1、雷霄驊的視頻課《基于FFmpeg+SDL的視頻播放器的制作-第1節(jié)-大綱和視音頻基礎(chǔ)知識(shí)》(PS:致敬音視頻大神雷神雷曉華先生,謝謝你生前為我們留下來(lái)的無(wú)私分享成果)
2、音視頻直播技術(shù)專家的《H264基本原理》
3、TIM鄧肯的《RGB與YCbCr》
4、取次花叢懶回顧的《【H.264/AVC視頻編解碼技術(shù)詳解】二十三、幀間預(yù)測(cè)編碼(1):幀間預(yù)測(cè)編碼的基本原理》
轉(zhuǎn)載請(qǐng)備注原文出處,不得用于商業(yè)傳播——凡幾多




