一 圖像顏色模式:
-
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
四 視頻封裝格式(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 | 根據不同的網絡傳輸速率,而制定出不同的壓縮比率,從而實現在低速率的網絡上進行影像數據實時傳送和播放,具有體積小,畫質不錯的優點。已過時。 |
五 音頻格式
- 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批准用於標準化。
本文內容收集於網絡