本章知識點一覽:
- 視訊播放原理
- 視訊檔案封裝格式
- 音視訊編碼方式簡介
一、視訊播放器原理:
我們播放的視訊檔案一般都是用一種封裝格式封裝起來的,封裝格式的作用是什麼呢?一般視訊檔案裡不光有視訊,還有音訊,封裝格式的作用就是把視訊和音訊打包起來。 所以我們先要解封裝格式,看有哪些視訊流和哪些音訊流,此時的音訊流和視訊流都還是壓縮資料,不能直接用於顯示的,這就需要解碼。下面是播放一個視訊檔案時的流程圖。
根據上面流程圖中的流程,我們從上至下一步步的來了解下每步驟的原理和實現方式。先來看下 視訊封裝格式。
二、視訊檔案封裝格式
封裝格式(也叫容器),就是將已經編碼壓縮好的視訊軌和音訊軌按照一定的格式放到一個檔案中,也就是說僅僅是一個外殼,或者大家把它當成一個放視訊軌和音訊軌的資料夾也可以。說得通俗點,視訊軌相當於飯,而音訊軌相當於菜,封裝格式就是一個碗,或者一個鍋,用來盛放飯菜的容器。 下面是幾種常用的 視訊檔案字尾型別 與其相對應的 封裝格式。
視訊檔案格式 | 視訊封裝格式 |
---|---|
.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、AVI 格式,對應的檔案格式為 .avi,全稱 Audio Video Interleaved,是由 Microsoft 公司於 1992 年推出。這種視訊格式的優點是影像質量好,無損 AVI 可儲存 alpha 通道。缺點是體積過於龐大,並且壓縮標準不統一,存在較多的高低版本相容問題。
-
2、DV-AVI 格式,對應的檔案格式為 .avi,英文全稱 Digital Video Format,是由索尼、松下、JVC 等多家廠商聯合提出的一種家用數字視訊格式。常見的數碼攝像機就是使用這種格式記錄視訊資料的。它可以通過電腦的 IEEE 1394 埠傳輸視訊資料到電腦,也可以將電腦中編輯好的的視訊資料回錄到數碼攝像機中。
-
3、WMV 格式,對應的檔案格式是 .wmv、.asf,英文全稱 Windows Media Video,是微軟推出的一種採用獨立編碼方式並且可以直接在網上實時觀看視訊節目的檔案壓縮格式。在同等視訊質量下,WMV 格式的檔案可以邊下載邊播放,因此很適合在網上播放和傳輸。
-
4、MPEG 格式,對應的檔案格式有 .mpg、.mpeg、.mpe、.dat、.vob、.asf、.3gp、.mp4 等等,英文全稱 Moving Picture Experts Group,是由運動影像專家組制定的視訊格式,該專家組於 1988 年組建,專門負責視訊和音訊標準制定,其成員都是視訊、音訊以及系統領域的技術專家。MPEG 格式目前有三個壓縮標準,分別是 **MPEG-1、MPEG-2、**和 MPEG-4。MPEG-4 是現在用的比較多的視訊封裝格式,它為了播放流式媒體的高質量視訊而專門設計的,以求使用最少的資料獲得最佳的影像質量。
-
5、Matroska 格式,對應的檔案格式是 .mkv,Matroska 是一種新的視訊封裝格式,它可將多種不同編碼的視訊及 16 條以上不同格式的音訊和不同語言的字幕流封裝到一個 Matroska Media 檔案當中。
-
6、Real Video 格式,對應的檔案格式是 .rm、.rmvb,是 Real Networks 公司所制定的音訊視訊壓縮規範稱為 Real Media。使用者可以使用 RealPlayer 根據不同的網路傳輸速率制定出不同的壓縮比率,從而實現在低速率的網路上進行影像資料實時傳送和播放。
-
7、QuickTime File Format 格式,對應的檔案格式是 .mov,是 Apple 公司開發的一種視訊格式,預設的播放器是蘋果的 QuickTime。這種封裝格式具有較高的壓縮比率和較完美的視訊清晰度等特點,並可以儲存 alpha 通道。
-
8、Flash Video 格式,對應的檔案格式是 .flv,是由 Adobe Flash 延伸出來的一種網路視訊封裝格式。這種格式被很多視訊網站所採用。
三、 音視訊編碼方式簡介
1、視訊編碼方式
- 視訊編碼的作用: 將視訊畫素資料(RGB,YUV 等)壓縮成視訊碼流,從而降低視訊的資料量。
名稱 | 推出機構 | 推出時間 | 目前使用領域 |
---|---|---|---|
HEVC(H.265) | MPEG/ITU-T | 2013 | 研發中 |
H.264 | MPEG/ITU-T | 2003 | 各個領域 |
MPEG4 | MPEG | 2001 | 不溫不火 |
MPEG2 | MPEG | 1994 | 數字電視 |
VP9 | 2013 | 研發中 | |
VP8 | 2008 | 不普及 | |
VC-1 | Microsoft Inc. | 2006 | 微軟平臺 |
(1)、H.26X 系列
H.26X 由國際電傳視訊聯盟遠端通訊標準化組織(ITU-T)主導,包括 H.261、H.262、H.263、H.264、H.265。
H.261,主要用於老的視訊會議和視訊電話系統。是第一個使用的數字視訊壓縮標準。實質上說,之後的所有的標準視訊編解碼器都是基於它設計的。
H.262,等同於 MPEG-2 第二部分,使用在 DVD、SVCD 和大多數數字視訊廣播系統和有線分佈系統中。
H.263,主要用於視訊會議、視訊電話和網路視訊相關產品。在對逐行掃描的視訊源進行壓縮的方面,H.263 比它之前的視訊編碼標準在效能上有了較大的提升。尤其是在低位元速率端,它可以在保證一定質量的前提下大大的節約位元速率。
H.264,等同於 MPEG-4 第十部分,也被稱為高階視訊編碼(Advanced Video Coding,簡稱 AVC),是一種視訊壓縮標準,一種被廣泛使用的高精度視訊的錄製、壓縮和釋出格式。該標準引入了一系列新的能夠大大提高壓縮效能的技術,並能夠同時在高位元速率端和低位元速率端大大超越以前的諸標準。
H.265,被稱為高效率視訊編碼(High Efficiency Video Coding,簡稱 HEVC)是一種視訊壓縮標準,是 H.264 的繼任者。HEVC 被認為不僅提升影像質量,同時也能達到 H.264 兩倍的壓縮率(等同於同樣畫面質量下位元率減少了 50%),可支援 4K 解析度甚至到超高畫質電視,最高解析度可達到 8192×4320(8K 解析度),這是目前發展的趨勢。
(2)、MPEG 系列
MPEG 系列由國際標準組織機構(ISO)下屬的運動圖象專家組(MPEG)開發。
- MPEG-1 第二部分,主要使用在 VCD 上,有些線上視訊也使用這種格式。該編解碼器的質量大致上和原有的 VHS 錄影帶相當。
- MPEG-2 第二部分,等同於 H.262,使用在 DVD、SVCD 和大多數數字視訊廣播系統和有線分佈系統中。
- MPEG-4 第二部分,可以使用在網路傳輸、廣播和媒體儲存上。比起 MPEG-2 第二部分和第一版的 H.263,它的壓縮效能有所提高。
- MPEG-4 第十部分,等同於 H.264,是這兩個編碼組織合作誕生的標準。
2、音訊編碼方式
音訊編碼的作用: 將音訊取樣資料(PCM 等)壓縮成音訊碼流,從而降低音訊的資料量。 常用的音訊編碼方式有以下幾種:
名稱 | 推出機構 | 推出時間 | 目前使用領域 |
---|---|---|---|
AAC | MPEG | 1997 | 各個領域(新) |
MP3 | MPEG | 1993 | 各個領域(舊) |
WMV | Microsoft Inc. | 1999 | 微軟平臺 |
AC-3 | Dolby Inc. | 1992 | 電影 |
(1)MP3
MP3,英文全稱 MPEG-1 or MPEG-2 Audio Layer III,是曾經非常流行的一種數字音訊編碼和有失真壓縮格式,它被設計來大幅降低音訊資料量。它是在 1991 年,由位於德國埃爾朗根的研究組織 Fraunhofer-Gesellschaft 的一組工程師發明和標準化的。MP3 的普及,曾對音樂產業造成極大的衝擊與影響。
(2)AAC
AAC,英文全稱 Advanced Audio Coding,是由 Fraunhofer IIS、杜比實驗室、AT&T、Sony 等公司共同開發,在 1997 年推出的基於 MPEG-2 的音訊編碼技術。2000 年,MPEG-4 標準出現後,AAC 重新整合了其特性,加入了 SBR 技術和 PS 技術,為了區別於傳統的 MPEG-2 AAC 又稱為 MPEG-4 AAC。 AAC 比 MP3 有更高的壓縮比,同樣大小的音訊檔案,AAC 的音質更高。
(3)WMA
WMA,英文全稱 Windows Media Audio,由微軟公司開發的一種數字音訊壓縮格式,本身包括有損和無失真壓縮格式。
四、 視訊畫素資料
1、視訊畫素資料簡介
- 視訊畫素資料作用: 儲存了螢幕上每個畫素點的畫素值。
- 格式: 常見的畫素格式有 RGB24,RGB32,YUV420P,YUV422P,YUV444P 等。壓縮編碼中一般使用的是 YUV 格式的畫素資料,最常見的格式為 YUV420P。
- 特點:視訊畫素資料體積很大,一個 1 小時電影的RGB24格式的資料體積為:
3600 * 25 * 1920 * 1080 * 3 = 559.872GByte
(PS:這裡嘉定頻率為 25Hz,取樣精度 8bit)
2、顏色模型
(1)RGB 顏色編碼
我們開發場景中使用最多的應該是 RGB 模型,R、G、B 分別代表了紅、綠、藍,這三種顏色稱為三原色,將它們以不同的比例相加,可以產生任何顏色。
RGB 影像中,每個畫素點都有紅、綠、藍三個原色,其中每種原色都佔用 8 bit,也就是一個位元組,那麼一個畫素點也就佔用 24 bit,也就是三個位元組。 那麼一張 1280 * 720 大小的圖片,就佔用 1280 * 720 * 3 / 1024 / 1024 = 2.63 MB 儲存空間。有沒有更高效的顏色模型能夠用更少的 bit 來表示顏色呢?那就是 YUV 顏色編碼。
(2)YUV (YCbCr)顏色編碼
相關實驗表明,人眼對亮度敏感而對色度不敏感。因而可以將亮度資訊和色度資訊分離,並對色度資訊採用更“狠”一點的壓縮方案,從而提高壓縮效率。
YUV 顏色編碼採用的是 明亮度 Y 和 色度 UV 來指定畫素的顏色。 “Y”表示明亮度(Luminance 或 Luma),也就是灰階值。 “U” 和 “V” 表示的則是色度(Chrominance 或Chroma),作用是描述影像色調和飽和度。
和 RGB 表示影像類似,每個畫素點都包含 Y、U、V 分量。但是它的 Y 和 UV 分量是可分離的,沒有 UV 分量一樣可以顯示完整的影像,但是是黑白的。
- YCbCr 顏色空間是 YUV 的國際標準化變種,在數字電視和影像壓縮(比如JPEG)方面都有應用。 YCbCr 其實是 YUV 經過縮放和偏移的翻版。其中 Y 與 YUV 中的 Y 含義一致, Cb,Cr 同樣都指色彩, 只是在表示方法上不同而已。在 YUV 家族中, YCbCr 是在計算機系統中應用最多的成員,其應用領域很廣泛,JPEG、MPEG 均採用此格式。一般人們所講的 YUV 大多是指YCbCr。 **Cb:**反映的是 RGB 輸入訊號藍色部分與 RGB 訊號亮度值之間的差異。 **Cr:**反映了 RGB 輸入訊號紅色部分與 RGB 訊號亮度值之間的差異。
- RGB 轉換為 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 轉換為 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 取樣格式
為節省頻寬,大多數 YUV 格式平均使用的每畫素位數都少於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 為例詳細看一下這種取樣格式。
從上圖中可以看 YUV4:2:0 先儲存個整張影像的 Y 資訊,然後儲存 U 資訊,最後儲存 V 資訊。但儲存的比例是不同的,可以看出是每儲存兩行 Y,才會儲存半行 U 和半行 V。4:4:4 4:4:4 表示完全取樣。和 RGB 大小一樣。
4:2:2 表示 2:1 的水平取樣,垂直完全取樣。比 RGB 小了三分之一。
以上的總結參考了並部分摘抄了以下文章,非常感謝以下作者的分享!:
1、雷霄驊的視訊課《基於FFmpeg+SDL的視訊播放器的製作-第1節-大綱和視音訊基礎知識》(PS:致敬音視訊大神雷神雷曉華先生,謝謝你生前為我們留下來的無私分享成果)
4、取次花叢懶回顧的《【H.264/AVC視訊編解碼技術詳解】二十三、幀間預測編碼(1):幀間預測編碼的基本原理》
轉載請備註原文出處,不得用於商業傳播——凡幾多