音視頻學習從零到整-關於視頻的一些概念

內容

  • 視頻文件格式
  • 視頻封裝格式
  • 視頻編解碼方式
  • 音頻編解碼方式
  • 顏色模型

一.視頻相關概念

1.1 視頻文件格式

文件格式這個概念應該是咱們比較熟悉的,好比咱們常見的 Word 文檔的文件格式是 .doc,JPG 圖片的文件格式是 .jpg 等等。那對於視頻來講, 咱們常見的文件格式則有:.mov、.avi、.mpg、.vob、.mkv、.rm、.rmvb 等等。文件格式一般表現爲文件在操做系統上存儲時的後綴名,它一般會被操做系統用來與相應的打開程序關聯,好比你雙擊一個 test.doc 文件,系統會調用 Word 去打開它。你雙擊一個 test.avi 或者 test.mkv 系統會調用視頻播放器去打開它。git

一樣是視頻,**爲何會有 .mov、.avi、.mpg 等等這麼多種文件格式呢?**那是由於它們經過不一樣的方式實現了視頻這件事情,至於這個不一樣在哪裏,那就須要瞭解一下接下來要說的「視頻封裝格式」這個概念了。算法

1.2 視頻封裝格式

視頻封裝格式,簡稱視頻格式,至關於一種儲存視頻信息的容器,它裏面包含了封裝視頻文件所須要的視頻信息、音頻信息和相關的配置信息(好比:視頻和音頻的關聯信息、如何解碼等等)。一種視頻封裝格式的直接反映就是對應着相應的視頻文件格式。bash

下面咱們就列舉一些文件封裝格式:網絡

  • AVI 格式,對應的文件格式爲 .avi,英文全稱 Audio Video Interleaved,是由 Microsoft 公司於 1992 年推出。這種視頻格式的優勢是圖像質量好,無損 AVI 能夠保存 alpha 通道。缺點是體積過於龐大,而且壓縮標準不統一,存在較多的高低版本兼容問題。ide

  • DV-AVI 格式,對應的文件格式爲 .avi,英文全稱 Digital Video Format,是由索尼、松下、JVC 等多家廠商聯合提出的一種家用數字視頻格式。常見的數碼攝像機就是使用這種格式記錄視頻數據的。它能夠經過電腦的 IEEE 1394 端口傳輸視頻數據到電腦,也能夠將電腦中編輯好的的視頻數據回錄到數碼攝像機中。性能

  • WMV 格式,對應的文件格式是 .wmv、.asf,英文全稱 Windows Media Video,是微軟推出的一種採用獨立編碼方式而且能夠直接在網上實時觀看視頻節目的文件壓縮格式。在同等視頻質量下,WMV 格式的文件能夠邊下載邊播放,所以很適合在網上播放和傳輸。網站

  • MPEG 格式,對應的文件格式有 .mpg、.mpeg、.mpe、.dat、.vob、.asf、.3gp、.mp4 等等,英文全稱 Moving Picture Experts Group,是由運動圖像專家組制定的視頻格式,該專家組於 1988 年組建,專門負責視頻和音頻標準制定,其成員都是視頻、音頻以及系統領域的技術專家。MPEG 格式目前有三個壓縮標準,分別是 MPEG-一、MPEG-二、和 MPEG-4。MPEG-4 是如今用的比較多的視頻封裝格式,它爲了播放流式媒體的高質量視頻而專門設計的,以求使用最少的數據得到最佳的圖像質量。ui

  • Matroska 格式,對應的文件格式是 .mkv,Matroska 是一種新的視頻封裝格式,它可將多種不一樣編碼的視頻及 16 條以上不一樣格式的音頻和不一樣語言的字幕流封裝到一個 Matroska Media 文件當中。編碼

  • Real Video 格式,對應的文件格式是 .rm、.rmvb,是 Real Networks 公司所制定的音頻視頻壓縮規範稱爲 Real Media。用戶可使用 RealPlayer 根據不一樣的網絡傳輸速率制定出不一樣的壓縮比率,從而實如今低速率的網絡上進行影像數據實時傳送和播放。spa

  • QuickTime File Format 格式,對應的文件格式是 .mov,是 Apple 公司開發的一種視頻格式,默認的播放器是蘋果的 QuickTime。這種封裝格式具備較高的壓縮比率和較完美的視頻清晰度等特色,並能夠保存 alpha 通道。

  • Flash Video 格式,對應的文件格式是 .flv,是由 Adobe Flash 延伸出來的一種網絡視頻封裝格式。這種格式被不少視頻網站所採用。

從上面的介紹中,咱們大概對視頻文件格式以及對應的視頻封裝方式有了一個概念,接下來則須要瞭解一下關於視頻更本質的東西,那就是視頻編解碼

1.3 容器(視頻封裝格式)

**封裝格式:**就是將已經編碼壓縮好的視頻數據 和音頻數據按照必定的格式放到一個文件中.這個文件能夠稱爲容器. 固然能夠理解爲這只是一個外殼.

一般咱們不只僅只存放音頻數據和視頻數據,還會存放 一下視頻同步的元數據.例如字幕.這多種數據會不一樣的程序來處理,可是它們在傳輸和存儲的時候,這多種數據都是被綁定在一塊兒的.

  • 常見的視頻容器格式:
    • AVI: 是當時爲對抗quicktime格式(mov)而推出的,只能支持固定CBR恆定定比特率編碼的聲音文件
    • MOV:是Quicktime封裝
    • WMV:微軟推出的,做爲市場競爭
    • mkv:萬能封裝器,有良好的兼容和跨平臺性、糾錯性,可帶外掛字幕
    • flv: 這種封裝方式能夠很好的保護原始地址,不容易被下載到,目前一些視頻分享網站都採用這種封裝方式
    • MP4:主要應用於mpeg4的封裝,主要在手機上使用。

2.1視頻編解碼方式

視頻編解碼的過程是指對數字視頻進行壓縮或解壓縮的一個過程.

在作視頻編解碼時,須要考慮如下這些因素的平衡:視頻的質量、用來表示視頻所須要的數據量(一般稱之爲碼率)、編碼算法和解碼算法的複雜度、針對數據丟失和錯誤的魯棒性(Robustness)、編輯的方便性、隨機訪問、編碼算法設計的完美性、端到端的延時以及其它一些因素。

2.2 常見視頻編碼方式:
  • H.26X 系列,由國際電傳視訊聯盟遠程通訊標準化組織(ITU-T)主導,包括 H.26一、H.26二、H.26三、H.26四、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 分辨率),這是目前發展的趨勢。
  • MPEG 系列,由國際標準組織機構(ISO)下屬的運動圖象專家組(MPEG)開發。

    • MPEG-1 第二部分,主要使用在 VCD 上,有些在線視頻也使用這種格式。該編解碼器的質量大體上和原有的 VHS 錄像帶至關。
    • MPEG-2 第二部分,等同於 H.262,使用在 DVDSVCD 和大多數數字視頻廣播系統和有線分佈系統中。
    • MPEG-4 第二部分,可使用在網絡傳輸、廣播和媒體存儲上。比起 MPEG-2 第二部分和初版的 H.263,它的壓縮性能有所提升。
    • MPEG-4 第十部分,等同於 H.264,是這兩個編碼組織合做誕生的標準。
  • 其餘,AMV、AVS、Bink、CineForm 等等,這裏就不作多的介紹了。

介紹了上面這些「視頻編解碼方式」後,咱們來講說它和上一節講的「視頻封裝格式」的關係。

能夠把「視頻封裝格式」看作是一個裝着視頻、音頻、「視頻編解碼方式」等信息的容器。一種「視頻封裝格式」能夠支持多種「視頻編解碼方式」,好比:QuickTime File Format(.MOV) 支持幾乎全部的「視頻編解碼方式」,MPEG(.MP4) 也支持至關廣的「視頻編解碼方式」。當咱們看到一個視頻文件名爲 test.mov 時,咱們能夠知道它的「視頻文件格式」是 .mov,也能夠知道它的視頻封裝格式是 QuickTime File Format,

可是沒法知道它的「視頻編解碼方式」。那比較專業的說法多是以 A/B 這種方式,A 是「視頻編解碼方式」,B 是「視頻封裝格式」。好比:一個 H.264/MOV 的視頻文件,它的封裝方式就是 QuickTime File Format,編碼方式是 H.264

3.1 音頻編碼方式

視頻中除了畫面一般還有聲音,因此這就涉及到音頻編解碼。在視頻中常用的音頻編碼方式有

  • AAC,英文全稱 Advanced Audio Coding,是由 Fraunhofer IIS、杜比實驗室、AT&T、Sony等公司共同開發,在 1997 年推出的基於 MPEG-2 的音頻編碼技術。2000 年,MPEG-4 標準出現後,AAC 從新集成了其特性,加入了 SBR 技術和 PS 技術,爲了區別於傳統的 MPEG-2 AAC 又稱爲 MPEG-4 AAC。
  • MP3,英文全稱 MPEG-1 or MPEG-2 Audio Layer III,是當曾經很是流行的一種數字音頻編碼和有損壓縮格式,它被設計來大幅下降音頻數據量。它是在 1991 年,由位於德國埃爾朗根的研究組織 Fraunhofer-Gesellschaft 的一組工程師發明和標準化的。MP3 的普及,曾對音樂產業形成極大的衝擊與影響。
  • WMA,英文全稱 Windows Media Audio,由微軟公司開發的一種數字音頻壓縮格式,自己包括有損和無損壓縮格式。

3.2 直播/小視頻中的編碼格式

  • 視頻編碼格式

    • H264編碼的優點:
      • 低碼率
      • 高質量的圖像
      • 容錯能力強
      • 網絡適應性強
    • 總結: H264最大的優點,具備很高的數據壓縮比率,在同等圖像質量下,H264的壓縮比是MPEG-2的2倍以上,MPEG-4的1.5~2倍.
    • 舉例: 原始文件的大小若是爲88GB,採用MPEG-2壓縮標準壓縮後變成3.5GB,壓縮比爲25∶1,而採用H.264壓縮標準壓縮後變爲879MB,從88GB到879MB,H.264的壓縮比達到驚人的102∶1
  • 音頻編碼格式:

    • AAC是目前比較熱門的有損壓縮編碼技術,而且衍生了LC-AAC,HE-AAC,HE-AAC v2 三種主要編碼格式.

      • LC-AAC 是比較傳統的AAC,主要應用於中高碼率的場景編碼(>= 80Kbit/s)
      • HE-AAC 主要應用於低碼率場景的編碼(<= 48Kbit/s)
    • 優點:在小於128Kbit/s的碼率下表現優異,而且多用於視頻中的音頻編碼

    • 適合場景:於128Kbit/s如下的音頻編碼,多用於視頻中的音頻軌的編碼

4.1 關於H264

H.264 是如今普遍採用的一種編碼方式。關於 H.264 相關的概念,從大到小排序依次是:序列、圖像、片組、片、NALU、宏塊、亞宏塊、塊、像素。

圖像

H.264 中,「圖像」是個集合的概念,幀、頂場、底場均可以稱爲圖像。一幀一般就是一幅完整的圖像。

當採集視頻信號時,若是採用逐行掃描,則每次掃描獲得的信號就是一副圖像,也就是一幀。

當採集視頻信號時,若是採用隔行掃描(奇、偶數行),則掃描下來的一幀圖像就被分爲了兩個部分,這每一部分就稱爲「場」,根據次序分爲:「頂場」和「底場」。

「幀」和「場」的概念又帶來了不一樣的編碼方式:幀編碼、場編碼逐行掃描適合於運動圖像,因此對於運動圖像採用幀編碼更好;隔行掃描適合於非運動圖像,因此對於非運動圖像採用場編碼更好。

片(Slice),每一幀圖像能夠分爲多個片

網絡提取層單元(NALU, Network Abstraction Layer Unit)

NALU 是用來將編碼的數據進行打包的,一個分片(Slice)能夠編碼到一個 NALU 單元。不過一個 NALU 單元中除了容納分片(Slice)編碼的碼流外,還能夠容納其餘數據,好比序列參數集 SPS。對於客戶端其主要任務則是接收數據包,從數據包中解析出 NALU 單元,而後進行解碼播放。

宏塊(Macroblock),分片是由宏塊組成。

4.2 顏色模型

咱們開發場景中使用最多的應該是 RGB 模型

在 RGB 模型中每種顏色須要 3 個數字,分別表示 R、G、B,好比 (255, 0, 0) 表示紅色,一般一個數字佔用 1 字節,那麼表示一種顏色須要 24 bits。那麼有沒有更高效的顏色模型可以用更少的 bit 來表示顏色呢?

如今咱們假設咱們定義一個**「亮度(Luminance)」**的概念來表示顏色的亮度,那它就能夠用含 R、G、B 的表達式表示爲:

Y = kr*R + kg*G + kb*B

複製代碼

Y 即「亮度」,kr、kg、kb 即 R、G、B 的權重值。

這時,咱們能夠定義一個**「色度(Chrominance)」**的概念來表示顏色的差別:

Cr = R – Y
Cg = G – Y
Cb = B – Y

複製代碼

Cr、Cg、Cb 分別表示在 R、G、B 上的色度份量。上述模型就是 YCbCr 顏色模型基本原理。

YCbCr 是屬於 YUV 家族的一員,是在計算機系統中應用最爲普遍的顏色模型,就好比在本文所講的視頻領域。在 YUV 中 Y 表示的是「亮度」,也就是灰階值,U 和 V 則是表示「色度」。

YUV 的關鍵是在於它的亮度信號 Y 和色度信號 U、V 是分離的。那就是說即便只有 Y 信號份量而沒有 U、V 份量,咱們仍然能夠表示出圖像,只不過圖像是黑白灰度圖像。在YCbCr 中 Y 是指亮度份量,Cb 指藍色色度份量,而 Cr 指紅色色度份量。

如今咱們從 ITU-R BT.601-7 標準中拿到推薦的相關係數,就能夠獲得 YCbCr 與 RGB 相互轉換的公式

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 這個顏色模型咱們就有個初步認識了,可是咱們會發現,這裏 YCbCr 也仍然用了 3 個數字來表示顏色啊,有節省 bit 嗎?爲了回答這個問題,咱們來結合視頻中的圖像和圖像中的像素表示來講明

  • 假設圖片有以下像素組成

  • 一副圖片就是一個像素陣列.每一個像素的 3 個份量的信息是完整的,YCbCr 4:4:4

  • 下圖中,對於每一個像素點都保留「亮度」值,可是省略每行中偶素位像素點的「色度」值,從而節省了 bit。YCbCr4:2:2

  • 上圖,作了更多的省略,可是對圖片質量的影響卻不會太大.YCbCr4:2:0

相關文章
相關標籤/搜索