在视频编解码中,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错误。
因此,视频编解码和播放系统必须“读懂”这些参数,才能让画面在不同设备上保持一致的色彩表现。