音視頻入門前,需要了解下一些基礎概念,不必死記硬背,可之后再補再翻閱。
一. 顏色模式
RGB
RGB顏色模型的主要目的是在電子系統中檢測,表示和顯示圖像,比如電視和計算機,但是在傳統攝影中也有應用。
基礎的部分不過多描述,更多內容點擊標題見維基百科。
YUV
Y'UV的發明是由于彩色電視與黑白電視的過渡時期。黑白視頻只有Y(Luma,Luminance)視頻,也就是灰階值。到了彩色電視規格的制定,是以YUV/YIQ的格式來處理彩色電視圖像,把UV視作表示彩度的C(Chrominance或Chroma),如果忽略C信號,那么剩下的Y(Luma)信號就跟之前的黑白電視頻號相同,這樣一來便解決彩色電視機與黑白電視機的兼容問題。Y'UV最大的優點在于只需占用極少的帶寬,因為人眼對亮度敏感,對色度不敏感,因此減少部分UV的數據量,但人眼感知不到。
YUV也稱為YCbCr,對于每個分量如下:
- Y:Luminance, 亮度,也就是灰度值。除了表示亮度信號外,還含有較多的綠色通道量。
- U:Cb,藍色通道與亮度的差值。
- V:Cr,紅色通道與亮度的差值。
如下圖,可以看到3個分量的效果差值。
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
- 色調H: 用角度度量,取值范圍為0°~360°,從紅色開始按逆時針方向計算,紅色為0°,綠色為120°,藍色為240°。它們的補色是:黃色為60°,青色為180°,品紅為300°;
- 飽和度S: 飽和度S表示顏色接近光譜色的程度。一種顏色,可以看成是某種光譜色與白色混合的結果。其中光譜色所占的比例愈大,顏色接近光譜色的程度就愈高,顏色的飽和度也就愈高。飽和度高,顏色則深而艷。光譜色的白光成分為0,飽和度達到最高。通常取值范圍為0%~100%,值越大,顏色越飽和。
-
明度V: 明度表示顏色明亮的程度,對于光源色,明度值與發光體的光亮度有關;對于物體色,此值和物體的透射比或反射比有關。通常取值范圍為0%(黑)到100%(白)。
hsv_1.png
RGB和CMY顏色模型都是面向硬件的,而HSV(Hue Saturation Value)顏色模型是面向用戶的。
HSV模型的三維表示從RGB立方體演化而來。設想從RGB沿立方體對角線的白色頂點向黑色頂點觀察,就可以看到立方體的六邊形外形。六邊形邊界表示色彩,水平軸表示純度,明度沿垂直軸測量。
HSV在做顏色檢測方面比較常用,可以參考文章HSV顏色檢測。
二. 視頻基礎概念
幀(Frame)
簡單的理解幀就是為視頻或者動畫中的每一張畫面,而視頻和動畫特效就是由無數張畫面組合而成,每一張畫面都是一幀。
幀數(Frames)
幀數其實就是為幀生成數量的簡稱,可以解釋為靜止畫面的數量
幀率(Frame Rate)
幀率(Frame rate) = 幀數(Frames)/時間(Time),單位為幀每秒(f/s, frames per second, fps)。
刷新率
屏幕每秒畫面被刷新的次數,分為垂直刷新率和水平刷新率,一般我們提到的都是指垂直刷新率,以赫茲(Hz)為單位,刷新率越高,圖像就越穩定,圖像顯示就越自然清晰。
目前, 大多數顯示器根據其設定按 30Hz、 60Hz、 120Hz 或者 144Hz 的頻率進行刷新。 而其中最常見的刷新頻率是 60 Hz。 這樣做是為了繼承以前電視機刷新頻率為 60Hz 的設定。
幀率關鍵值
- 10~12 FPS:由于人類眼睛的特殊生理結構,如果所看畫面之幀率高于每秒約10至12幀的時候,就會認為是連貫的,此現象稱之為視覺暫留。
- 24 FPS:一般電影的拍攝及播放幀數是每秒24幀。
- 60 FPS:這個幀率對人眼識別來說已經具備較高的平滑度。
- 85 FPS:人類大腦處理視頻的極限,人眼無法分辨更高頻率的差異。
60FPS
在做頁面性能優化時,常用60FPS作為一個基準,所以需要盡量讓每一幀的渲染控制在16ms內,這樣才能達到一秒60幀的流暢度。
分辨率
視頻、圖片的畫面大小或尺寸。
碼率/比特率
單位時間播放連續的媒體如壓縮后的音頻或視頻的比特數量。常用單位“比特每秒”,縮寫是“bit/s”。比特率越高,帶寬消耗得越多。
三. CPU & GPU
CPU:中央處理器(英文全名:Central Processing Unit),包括運算器(算術邏輯運算單元,ALU,Arithmetic Logic Unit)和高速緩沖存儲器(Cache)及實現它們之間聯系的數據(Data)、控制及狀態的總線(Bus)。
GPU:圖形處理器(英語全名:Graphics Processing Unit),專為執行復雜的數學和幾何計算而設計的,擁有2D或3D圖形加速功能。
GPU相比于CPU,更強大的2D、3D圖形計算能力,可以讓CPU從圖形處理的任務中解放出來,執行其他更多的系統任務,這樣可以大大提高計算機的整體性能。
硬件加速
硬件加速(Hardware acceleration)就是利用硬件模塊來替代軟件算法以充分利用硬件所固有的快速特性。硬件加速通常比軟件算法的效率要高。
將2D、3D圖形計算相關工作交給GPU處理,從而釋放CPU的壓力,也是屬于硬件加速的一種。
硬解和軟解
硬解和上面的硬件加速對應,即使用硬件模塊來解析視頻、音頻文件等,而軟解即是用CPU去計算解析。
四. 視頻封裝格式(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 | 2010 | 谷歌推出的 HTML5 標準的網絡視頻標準,以MKV容器格式為基礎開發 | |
RMVB | RMVB | Real Networks | 1997 | 根據不同的網絡傳輸速率,而制定出不同的壓縮比率,從而實現在低速率的網絡上進行影像數據實時傳送和播放,具有體積小,畫質不錯的優點。已過時。 |
更多參考 維基百科視頻文件格式。
五. 視頻編碼格式(Codec)
1. MPEG:(Moving Picture Experts Group, ISO旗下的組織)
MPEG是Moving Picture Experts Group的簡稱。這個名字本來的含義是指一個研究視頻和音頻編碼標準的“動態圖像專家組”組織,成立于1988年,致力開發視頻、音頻的壓縮編碼技術。
版本 | 用途 |
---|---|
MPEG - 1 | VCD |
MPEG - 2 | DVD、數字有線電視信號 |
MPEG - 4(第二部分) | 視頻電話、網絡傳輸、廣播和媒體存儲 |
2. H.26X : ITU-T VCEG(Visual Coding Experts Group,國際電聯旗下的標準化組織)制定
版本 | 用于 |
---|---|
H.261 | 老的視頻會議和視頻電話產品 |
H.262 | DVD、數字有線電視信號(與MPEG共同制定,與MPEG-2完全一致) |
H.263 | 視頻會議、視頻電話和網絡視頻 |
H.264 | 高精度視頻的錄制、壓縮和發布格式(與MPEG-4第十部分完全一致),當前主流 |
H.265 | H.264的兩倍之壓縮率,可支持4K分辨率甚至到超高畫質電視,最高分辨率可達到8192×4320(8K分辨率) |
3. H.264
當前主流的編碼格式是H.264,這是由ITU-T VCEG和MPEG共同制定的標準,MPEG - 4第十部分內容也是H.264。
視頻封裝格式 & 視頻編碼格式
封裝格式是提供了一個容器,用于存放視頻、音頻以及其他配置信息,而編碼格式是指對視頻畫面內容進行壓縮的一種標準。
六. 音頻格式
- 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批準用于標準化。
七. H.264編碼介紹
IPB幀
- I幀:幀內編碼幀(intra picture),采用幀內壓縮去掉空間冗余信息。
- P幀:前向預測編碼幀(predictive-frame),通過將圖像序列中前面已經編碼幀的時間冗余信息來壓縮傳輸數據量的編碼圖像。參考前面的I幀或者P幀。
- B幀:雙向預測內插編碼幀(bi-directional interpolated prediction frame),既考慮源圖像序列前面的已編碼幀,又顧及源圖像序列后面的已編碼幀之間的冗余信息,來壓縮傳輸數據量的編碼圖像,也稱為雙向編碼幀。參考前面一個的I幀或者P幀及其后面的一個P幀。
PTS和DTS
- DTS(Decoding Time Stamp)是標識讀入內存中bit流在什么時候開始送入解碼器中進行解碼。也就是解碼順序的時間戳。
- PTS(Presentation Time Stamp)用于度量解碼后的視頻幀什么時候被顯示出來。在沒有B幀的情況下,DTS和PTS的輸出順序是一樣的,一旦存在B幀,PTS和DTS則會不同。也就是顯示順序的時間戳。
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