在視頻編解碼中,colorspace
(色彩空間)、color_range
(色域范圍)、color_trc
(傳輸特性)、color_primaries
(原色)是一組色彩相關元數據,它們共同決定了視頻的顏色如何被編碼、傳輸和解碼顯示,核心作用是確保視頻在不同設備(攝像機、顯示器、播放器等)之間保持一致的色彩表現。
一、各參數的具體作用
1. colorspace
(色彩空間)
- 定義:描述顏色的數學表示方式,核心是將光的物理特性(波長)轉換為可被設備處理的數字信號。
- 常見類型:
- RGB:紅、綠、藍三原色混合(適用于顯示器、相機傳感器)。
- YUV/YCbCr:亮度(Y)+ 色度(U/Cb、V/Cr)分離(適用于視頻傳輸和存儲,因為人眼對亮度更敏感,可壓縮色度信息節省帶寬)。
- 其他:如XYZ(國際通用色彩空間,用于顏色轉換的中間格式)。
- 作用:決定視頻顏色的“編碼語言”,例如攝像機采集的RGB信號會轉換為YUV進行編碼存儲,顯示器再將YUV轉回RGB顯示,若色彩空間不匹配,會導致嚴重偏色(如畫面發黃、發藍)。
2. color_primaries
(原色)
- 定義:規定紅(R)、綠(G)、藍(B)三原色在CIE色度圖上的坐標,決定了視頻可表示的顏色范圍邊界(即“色域”的基礎)。
- 常見標準:
- Rec.709:HDTV(高清電視)標準,原色坐標較窄,覆蓋人眼可識別顏色的約35%。
- Rec.2020:UHD/4K/8K標準,原色坐標更寬,覆蓋約75%,支持更豐富的色彩(如更鮮艷的紅、綠)。
- DCI-P3:影院標準,色域介于Rec.709和Rec.2020之間,適合電影內容。
- sRGB:電腦顯示器、互聯網內容常用,與Rec.709原色接近。
- 作用:限制視頻能顯示的顏色“上限”。例如,用Rec.2020拍攝的鮮艷花朵,若在僅支持Rec.709的顯示器上播放,會因原色不匹配導致顏色“褪色”或失真。
3. color_trc
(傳輸特性,又稱gamma曲線)
- 定義:描述“輸入光強度”與“輸出電信號”之間的映射關系(非線性轉換),因為人眼對亮度的感知是非線性的(對暗部更敏感)。
- 常見類型:
- Gamma 2.2:適用于電腦顯示器、sRGB標準。
- Rec.709 TRC:HDTV的傳輸特性,與Gamma 2.2接近但略有差異。
- PQ(Perceptual Quantizer):HDR標準(如HDR10),支持更高的亮度范圍(0-10000尼特),能保留更多明暗細節。
- HLG(Hybrid Log-Gamma):另一類HDR標準,兼容SDR設備。
- 作用:確保亮度在編碼和解碼時的“非線性映射”匹配。若TRC不匹配,會導致畫面過暗、過亮或明暗細節丟失(如暗部發黑看不清,亮部過曝)。
4. color_range
(色域范圍,又稱量化范圍)
- 定義:在數字信號中,亮度(Y)和色度(U/V)的數值取值范圍(針對YUV色彩空間)。
- 常見類型:
- 有限范圍(Limited Range):
Y取值16-235(8位),U/V取值16-240(8位)。這是視頻標準默認范圍(如Rec.601、Rec.709),留出的16以下和235以上空間用于防止信號溢出。 - 全范圍(Full Range):
Y/U/V取值0-255(8位),適用于電腦顯示器、RGB信號(如圖片、游戲)。
- 有限范圍(Limited Range):
- 作用:決定亮度和色度的“數值邊界”。若范圍不匹配(如視頻是有限范圍,播放器按全范圍解碼),會導致畫面對比度異常(如暗部發灰、亮部泛白)。
二、這些參數由誰指定?
這些參數的指定貫穿視頻制作→編碼→傳輸→顯示全流程,核心由內容創作者和標準規范決定,具體環節如下:
-
內容創作階段(源頭)
- 攝像機、相機在采集畫面時,會根據自身硬件和拍攝標準(如“電影模式”“電視模式”)預設這些參數。例如:
- 高清攝像機默認遵循Rec.709(原色+傳輸特性)、YUV色彩空間、有限范圍。
- HDR攝像機可能采用Rec.2020原色、PQ傳輸特性。
- 后期剪輯軟件(如Premiere、DaVinci Resolve)中,剪輯師可手動調整這些參數(如轉換為DCI-P3色域適配影院播放)。
- 攝像機、相機在采集畫面時,會根據自身硬件和拍攝標準(如“電影模式”“電視模式”)預設這些參數。例如:
-
編碼階段(固化到視頻中)
- 編碼器(如x264、x265)會將這些參數寫入視頻元數據(如H.264/H.265的SPS序列參數集、MP4容器的
colr
原子、MKV的Color
標簽),作為解碼時的“說明書”。 - 例如,編碼時若指定
-color_primaries bt709 -color_trc bt709
,編碼器會將這些信息嵌入視頻,告訴解碼器“按Rec.709標準處理顏色”。
- 編碼器(如x264、x265)會將這些參數寫入視頻元數據(如H.264/H.265的SPS序列參數集、MP4容器的
-
傳輸與解碼階段(遵循元數據)
- 解碼器(如FFmpeg、播放器內置解碼器)會讀取視頻元數據中的這些參數,按規則轉換顏色(如YUV轉RGB)。
- 若視頻元數據缺失(如老視頻),解碼器會按默認標準(如Rec.709)猜測,可能導致色彩偏差。
-
顯示階段(最終適配)
- 顯示器、電視會根據自身硬件能力(如是否支持HDR、P3色域),結合解碼器傳遞的參數進行調整。例如:
- 普通電視接收Rec.709信號時,按對應原色和TRC顯示;
- HDR電視接收PQ信號時,會激活高亮度模式,匹配傳輸特性。
- 顯示器、電視會根據自身硬件能力(如是否支持HDR、P3色域),結合解碼器傳遞的參數進行調整。例如:
三、為什么這些參數很重要?
如果這些參數不匹配(如編碼是Rec.2020原色,播放器按Rec.709解碼),會直接導致色彩失真、亮度異常、對比度錯誤,嚴重影響觀看體驗。例如:
- 常見問題:“下載的電影畫面發黃”,可能是color_primaries不匹配;“畫面發灰”,可能是color_range錯誤。
因此,視頻編解碼和播放系統必須“讀懂”這些參數,才能讓畫面在不同設備上保持一致的色彩表現。