音視頻基礎知識

  1. 概要

    我們日常生活中的視頻文件 avi, rmvb, mp4, flv, mkv 等後綴,叫作 封裝格式

    封裝格式 是由 視頻編碼數據(H.264, MPEG2, VC-1) 和 音頻編碼數據(AAC, MP3, AC-3) 組成。

    視頻編碼數據 是由 視頻像素數據(YUV420P, RGB) 組成

    音頻編碼數據 是由 音頻採樣數據(PCM) 組成

  2. 音頻基礎知識

    • 聲音介紹

      聲音是一種物理現象。物體振動時產生聲波通過空氣傳到人們的耳膜經過大腦的反射被感知爲聲音。聲音以的形式振動傳播。

      聲音的三要素:

      • 頻率 - 音階(xxx Hz, xxx kHz)

      • 振幅 - 響度

      • 波形 - 音色

      人耳的聽力頻率範圍(20Hz ~ 20kHz),人耳對 3~4kHz 頻率範圍內的聲音比較敏感

    • 模擬信號

      音頻信號是典型的連續信號,在時間和幅度上都是連續的。在任何一個特定的時間點都一個對應的幅值。時間和幅度上都是連續的信號成爲模擬信號

  • 數字信號

    複雜的聲波由許許多多具有不同振幅和頻率的正弦波組成。代表聲音的模擬信號是個連續的量,不能由計算機直接處理,必須將其數字化。

    經過數字化處理之後的數字聲音能夠像文字和圖形信息一樣進行存儲、檢索、編輯和其他處理。

    數字音頻是指使用數字編碼的方式也就是使用0和1來記錄音頻信息。

    聲音可以表達成一種隨着時間的推移形成的一種波形,那麼如何描述這種波形存儲到計算機中呢?

    每隔一定的時間間隔,存儲波形圖對應的位置(電平信號),然後將電平信號轉化成二進制數據保存。

    模擬音頻數字化:

    • 採樣:對時間軸上的信號進行數字化。將時間軸上連續的信號每隔一定的時間間隔抽取出一個信號的幅度樣本,把連續的模擬量用一個個離散的點表示出來,使其成爲時間上離散的脈衝序列。採樣定律(Nyquist定理):要想不產生低頻失真,採樣頻率至少應爲所要錄製的音頻的最高頻率的2倍。

    • 量化:在幅度軸上對信號進行數字化。將採樣後離散信號的幅度用二進制數表示出來。每個採樣點所能表示的二進制位數稱爲量化精度,或量化位數。量化精度反映了度量聲音波形幅度的精度。

    • 編碼:按照一定的格式記錄採樣和量化後的數字數據,比如順序存儲和壓縮存儲。採樣和量化後的信號還不是數字信號,需要將它轉化爲數字編碼脈衝,這一過程稱爲編碼。

    音頻編碼的格式有很多種,而通常所說的音頻裸數據指的是脈衝編碼調製(PCM)數據。

  • 音頻編碼

    一分鐘量化格式 16比特(2字節),採樣率 44100, 聲道數 2(CD音質)的數據採樣需要的存儲空間約爲10.1MB,從存儲的角度或者實時傳播的角度,這個數據量都太大了,所以需要對音頻數據進行壓縮編碼。

    • 壓縮編碼原理:壓縮掉冗餘信號,冗餘信號是指不能被人耳感知的信號,包含人耳聽覺範圍之外的音頻信號以及被掩蔽掉的信號

    人耳掩蔽效應:當一個強音信號與一個弱音信號同時存在時,弱音信號將被強音信號所掩蔽而聽不見,這樣弱音信號就可以視爲冗餘信號而不用傳送。

    掩蔽 = 時域掩蔽 + 頻域掩蔽

    編碼格式:WAV,AAC,MP3,Ogg

    一般情況下音頻的數據量要遠小於視頻的數據量,因而音頻編碼的數據流對於視音頻的總數據量不會產生太大的影響。

  1. 視頻基礎知識

    • 光和顏色

      是一種肉眼可以看見的電磁波(可見光譜)

      顏色是視覺系統對可見光的感知結果。

      自然界中的任何一種顏色都可以由 R,G, B 這三種顏色值之和來確定,以這三種顏色爲基色構成一個 RGB 顏色空間。

    • RGB

      用途:主要用來在 LCD、CRT 顯示器上用

      RGB 色彩模式是工業界的一種顏色標準,通過對 紅(R)、綠(G)、藍(B)三個顏色通道的變化以及對它們相互之間的疊加來得到各式各樣的顏色。

    • YUV

      用途:主要用於視頻信號的壓縮、傳輸和存儲,和向後相容老式黑白電視。

      人類視網膜杆細胞要多於視網膜錐細胞,視網膜杆細胞的作用就是識別亮度,而視網膜錐細胞的作用就是識別色度。所以,人眼對亮度分辨率的敏感度要高於對色彩分辨率的敏感度。

      YUV 色彩模型就是利用這個原理,把亮度與色度分離,根據人對亮度更敏感些,增加亮度的信號,減少顏色的信號,以這樣“欺騙”人的眼睛的手段來節省空間,從而適合於圖像處理領域。

      描述影像的色彩及飽和度,用於指定像素的顏色

      • Y 表示 亮度,也稱爲灰階值(即黑白)
      • U、V 表示的 色度

      亮度 是透過 RGB 輸入信號來建立的,方法是將RGB信號的特定部分疊加到一起。

      色度 則定義了顏色的兩個方面 — 色調與飽和度,分別用 Cr 和 Cb 來表示。Cr 反映了 RGB 輸入信號紅色部分與 RGB 信號亮度值之間的差異,Cb 反映的是 RGB 輸入信號藍色部分與RGB信號亮度之間的差異

      優點: 彩色圖像轉黑白圖像(兼容老式黑白電視);數據尺寸小於 RGB 格式。

      RGBYUV 可以通過一定的數學關係相互轉換。

    • 視頻編碼

      視頻編碼的主要作用是將視頻像素數據(RGB、YUV等)壓縮成爲視頻碼流,從而降低視頻的數據量。如果視頻不經過壓縮編碼的話,體積通常是非常大的。高效率的視頻編碼在同等的碼率下,可以獲得更高的視頻質量。

      一個好的編碼方式不但可以讓視頻體積更小,更是爲同等數據量下更加清晰的播放提供可能。

      那麼視頻編碼需要壓縮一些什麼數據呢?

      視頻冗餘:

      • 空間冗餘:視頻的背景和整體顏色相近並且平穩變化,可以利用幀內編碼進行壓縮(無損)
      • 時間冗餘:兩個視頻幀之間具有強相關性,利用運動估計運動補償進行幀間壓縮(無損)
      • 結構冗餘:圖像內部存在相似性,通過這種關係可以進行分形編碼
      • 編碼冗餘:出現概率大的顏色編碼長度短,概率小的顏色編碼長度長(可變長度編碼)
      • 視覺冗餘:利用人眼對亮度和色度的敏感度不同,在編碼時進行數據壓縮(有損壓縮)

      常見編碼格式:H.265、H.264、MPEG4、VP9、VP8等


    • 視頻解碼

      因爲編碼過的內容無法直接使用,使用(觀看)時必須解壓縮,還原爲原始的信號。

  2. 視頻封裝

    一個完整的視頻文件是由音頻視頻組成的,而音視頻又是由封裝格式編碼格式構成。

    封裝格式就是將已經編碼壓縮好的視頻軌音頻軌按照一定的格式放到一個文件中。

    如下 MKV 格式的封裝:

    部分技術先進的容器還可以同時封裝多個視頻、音頻編碼文件,甚至同時封進字幕。

  3. 播放網絡視頻文件

    步驟:解協議 -> 解封裝 -> 解碼音視頻 -> 音視頻同步

    如果播放本地文件,則不需要解協議

  1. 相關術語

    • 視頻:連續的圖像變化每秒超過24幀畫面以上時,根據視覺暫留原理,人眼無法辨別單幅的靜態畫面,看上去是平滑連續的視覺效果,這樣連續的畫面叫作視頻。

    • 幀:影像中常用的最小單位,一幀就是一幅靜止的畫面,連續的幀就形成了視頻

    • 分辨率:一幀視頻的大小,表示長寬像素個數(720x576,1280x720,1920x1080)

    • 幀率:每秒鐘所傳輸的視頻幀數,通常用 FPS 標識,幀數越高,畫面也就越流暢。

    • 碼率(比特率):單位時間內傳送的比特數,一般單位爲 kbps

      • 音頻中: 音頻文件或者音頻流中1秒中的數據量,如 1.44Mbps,就是1秒鐘內的數據量1.44Mbits。碼率越高,傳送的數據越大,音質越好
      • 視頻中:原理與聲音中的相同,都是指由模擬信號轉換爲數字信號後,單位時間內的二進制數據量,即每秒顯示的圖片進行壓縮後的數據流。
    • 刷新率:屏幕刷新的速度。 刷新頻率越低,圖像閃爍、停頓和抖動的就越厲害。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章