音視頻基礎知識整理

一 圖像顏色模式:
  • RGB:
    圖像存儲格式,紅、綠、藍三原色的亮度來定量表示顏色,RGB

  • YUV:
    圖像存儲格式,一種顏色編碼方法
    Y:表示明亮度(Luminance或Luma),也就是灰階值。
    U:表示色度(描述影像色彩及飽和度,用於指定像素的顏色)Cb,藍色通道與亮度的差值。
    V:表示色度,Cr,紅色通道與亮度的差值。

    常用YUV格式:YCbCr4:2:0、YCbCr4:2:2、YCbCr4:1:1和YCbCr4:4:4

    4:4:4表示完全取樣。
    4:2:2表示2:1的水平取樣,垂直完全採樣。
    4:2:0表示2:1的水平取樣,垂直2:1採樣。
    4:1:1表示4:1的水平取樣,垂直完全採樣。

    RGB與YUV轉換公式 (RGB取值範圍均爲0~255)

    Y=0.299R+0.587G+0.114B ⁄ R=Y+1.14V
    U=-0.147R-0.289G+0.436B ⁄G=Y-0.39U-0.58V
    V=0.615R-0.515G-0.100B ⁄ B=Y+2.03U

  • HSV:
    面向用戶的顏色,HSV顏色檢測

    色調H:
    用角度度量,取值範圍爲0°~360°,從紅色開始按逆時針方向計算,紅色爲0°,綠色爲120°,藍色爲240°。它們的補色是:黃色爲60°,青色爲180°,品紅爲300°;
    飽和度S:
    飽和度S表示顏色接近光譜色的程度。一種顏色,可以看成是某種光譜色與白色混合的結果。其中光譜色所佔的比例愈大,顏色接近光譜色的程度就愈高,顏色的飽和度也就愈高。飽和度高,顏色則深而豔。光譜色的白光成分爲0,飽和度達到最高。通常取值範圍爲0%~100%,值越大,顏色越飽和。
    明度V:
    明度表示顏色明亮的程度,對於光源色,明度值與發光體的光亮度有關;對於物體色,此值和物體的透射比或反射比有關。通常取值範圍爲0%(黑)到100%(白)。

二 音視頻基礎概念
  • 幀(Frame)
    簡單的理解幀就是視頻或者動畫中的每一張畫面,幀代表一幅靜止的圖像,分爲I幀,P幀,B幀。
  • 幀率
    幀率(Frame rate) = 幀數(Frames)/時間(Time),單位爲幀每秒(f/s, frames per second, fps)。
  • 刷新率
    屏幕每秒畫面被刷新的次數,分爲垂直刷新率和水平刷新率,一般我們提到的都是指垂直刷新率,以赫茲(Hz)爲單位,刷新率越高,圖像就越穩定,圖像顯示就越自然清晰。
    最常見的刷新頻率是 60 Hz。
    10~12 FPS:由於人類眼睛的特殊生理結構,如果所看畫面之幀率高於每秒約10至12幀的時候,就會認爲是連貫的,此現象稱之爲視覺暫留。
    24 FPS:一般電影的拍攝及播放幀數是每秒24幀。
    60 FPS:這個幀率對人眼識別來說已經具備較高的平滑度。(基準幀率,每幀16ms)
    85 FPS:人類大腦處理視頻的極限,人眼無法分辨更高頻率的差異。
  • 分辨率
    視頻、圖片的畫面大小或尺寸。
  • 碼率/比特率
    單位時間播放連續的媒體如壓縮後的音頻或視頻的比特數量。常用單位“比特每秒”,縮寫是“bit/s”。比特率越高,帶寬消耗得越多。
  • 容器(Container)
    容器就是一種文件格式,比如flv,mkv等
  • 流(Stream)
    是一種視頻數據信息的傳輸方式,5種流:音頻,視頻,字幕,附件,數據
  • 編解碼器(Codec)
    是對視頻進行壓縮或者解壓縮的工具
  • 複用(mux)
    把不同的流按照某種容器的規則放入容器。
  • 解複用(demux):
    把不同的流從某種容器中解析出來。
三 視頻編解碼
  • 編碼的流程
    採集–> 獲取到視頻幀–> 對視頻幀進行編碼 --> 獲取到視頻幀信息 --> 將編碼後的數據以NALU方式寫入到文件
  • 硬編碼
    使用非CPU進行編碼,如顯卡GPU、專用的DSP、FPGA、ASIC芯片等
  • 軟編碼
    使用CPU進行編碼,軟編碼通常使用:ffmpeg+x264
  • 視頻編碼協議:
    • H. 264:低碼率,高質量,高容錯 。(編碼單位固定16*16)開源實現:ffmpeg、openh264、x264。
    • H. 265:能達到H.264兩倍之壓縮率,可支持4k分辨率,最高到8k。(編碼單位88-6464)開源實現:ffmpeg、libde265、x265。
      二者比較:H.265更爲先進,同樣畫質的情況下,265理論存儲空間節省50%,同樣碼率下,265理論畫質提高30%-40%。
    • MPEG
  • DTS和PTS:
    DTS(Decoding Time Stamp):即解碼時間戳,這個時間戳的意義在於告訴播放器該在什麼時候解碼這一幀的數據。
    PTS(Presentation Time Stamp):即顯示時間戳,這個時間戳用來告訴播放器該在什麼時候顯示這一幀的數據。
  • 硬件加速
    利用硬件模塊來替代軟件算法以充分利用硬件所固有的快速特性。硬件加速通常比軟件算法的效率要高。
    將2D、3D圖形計算相關工作交給GPU處理,從而釋放CPU的壓力,也是屬於硬件加速的一種。
  • 硬解
    使用硬件模塊來解析視頻、音頻文件等
  • 軟解
    用CPU去計算解析。
  • 視頻編碼中的幀
    • I幀:表示關鍵幀,你可以理解爲這一幀畫面的完整保留;解碼時只需要本幀數據就可以完成(因爲包含完整畫面)
    • P幀:表示的是這一幀跟之前的一個關鍵幀(或P幀)的差別,解碼時需要用之前緩存的畫面疊加上本幀定義的差別,生成最終畫面。(也就是差別幀,P幀沒有完整畫面數據,只有與前一幀的畫面差別的數據)
    • B幀:是雙向差別幀,也就是B幀記錄的是本幀與前後幀的差別(具體比較複雜,有4種情況),換言之,要解碼B幀,不僅要取得之前的緩存畫面,還要解碼之後的畫面,通過前後畫面的與本幀數據的疊加取得最終的畫面。B幀壓縮率高,但是解碼時CPU會比較累~。
  • GOP
    Group of picture(圖像組),指兩個I幀之間的距離,Reference(參考週期)指兩個P幀之間的距離。
    一個I幀所佔用的字節數大於一個P幀,一個P幀所佔用的字節數大於一個B幀。所以在碼率不變的前提下,GOP值越大,P、B幀的數量會越多,平均每個I、P、B幀所佔用的字節數就越多,也就更容易獲取較好的圖像質量;Reference越大,B幀的數量越多,同理也更容易獲得較好的圖像質量。
    簡而言之:
    • 字節大小:I > P > B
    • 解碼順序:I -> P -> B
      GOP解碼
四 視頻封裝格式(Container format)
格式 全名 開發商 初版年限 特點
MP4 MP4 Moving Picture Experts Group,即 MPEG(動態圖像專家組) 1998 常用有損壓縮格式,通用性強
AVI Audio Video Interleaved(音頻視頻交錯格式) 微軟 1992 體積大算法簡單
MOV QuickTime 影片格式 Apple 1991 蘋果專屬格式對很多其他的播放器支持不是很友好
WMV Windows Media Video 微軟 2003 微軟的專業視頻格式,兼容性並不是很好
FLV Adobe Flash 網絡流媒體格式 Adobe 2002 被淘汰的早期網絡視頻格式
MKV Matroska 多媒體容器 Matroska.org 2002 最有包容性的視頻格式,能容納無限量、多種不同類型編碼的視頻、音頻及字幕流
WebM WebM Google 2010 谷歌推出的 HTML5 標準的網絡視頻標準,以MKV容器格式爲基礎開發
RMVB RMVB Real Networks 1997 根據不同的網絡傳輸速率,而制定出不同的壓縮比率,從而實現在低速率的網絡上進行影像數據實時傳送和播放,具有體積小,畫質不錯的優點。已過時。
五 音頻格式
  • WAV:因其文件擴展名爲wav,微軟和IBM聯合開發的標準,數據本身的格式爲PCM或壓縮型,屬於無損格式。
  • MP3 : MP3是一種音頻壓縮技術,其全稱是動態影像專家壓縮標準音頻層面3(Moving Picture Experts Group Audio Layer III),簡稱爲MP3。壓縮比4:1~10:1之間。
  • AAC:Advanced Audio Coding, 出現於1997年,由Fraunhofer IIS、杜比實驗室、AT&T、Sony、Nokia等公司共同開發。AAC壓縮比通常爲18:1。相比MP3,採用更高效的編碼算法,音質更佳,文件更小。
  • Opus:Opus格式是一個開放格式,使用上沒有任何專利或限制,比MP3、AAC、HE-AAC等常見格式,有更低的延遲和更好的聲音壓縮率。2012年7月2日,Opus被IETF批准用於標準化。
本文內容收集於網絡
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章