1.yuv色彩空间和色彩范围
色彩空间定义了视频采样中颜色的表示方式。常用的色彩空间包括 RGB 和 YUV,其中 YUV 更常用,因为它对人类视觉系统的特性更加符合。在 YUV 中,Y 表示亮度(luma),而 U 和 V 则表示颜色(chroma)。
色彩范围定义了视频中亮度和颜色的取值范围。完整范围(0-255)包含了所有可能的取值,包括黑色(0)和白色(255);而标准计算机范围(16-235)则排除了极端的黑色和白色值,使亮度和颜色范围更加均衡。
在使用 ffplay 播放视频时,可以通过设置命令行参数来指定色彩空间和色彩范围。
1.1要指定色彩空间,可以使用 -colorspace 参数,后跟所需的色彩空间名称。例如,要将视频解码为 BT.709 色彩空间,可以使用以下命令:
ffplay -colorspace bt709 input.mp4
1.2要指定色彩范围,可以使用 -color_range 参数,后跟所需的色彩范围名称。例如,要将视频解码为完整范围(0-255)的色彩范围,可以使用以下命令:
ffplay -color_range pc input.mp4
example:
以下是常用的色彩空间和色彩范围选项:
2.色彩空间:
bt601: ITU-R BT.601 色彩空间
bt709: ITU-R BT.709 色彩空间
smpte170m: SMPTE 170M 色彩空间
smpte240m: SMPTE 240M 色彩空间
这些标准就是rgb与yuv转换时的公式不同。参考文未链接。
-colorspace bt709 是 FFmpeg 中用于指定色彩空间的选项之一。它表示视频采用了 BT.709 色彩空间。BT.709 是一种广泛应用于高清电视和蓝光光盘等场景的标准色彩空间,它与 sRGB 色彩空间相似,但是有些微小的差异。在数字视频中,BT.709 色彩空间被广泛应用于 720p 和 1080p 的高清视频中。
除了 -colorspace bt709 之外,FFmpeg 中还有许多其他的色彩空间选项,如 -colorspace sRGB、-colorspace bt601、-colorspace smpte170m 等等。这些选项表示视频采用了不同的色彩空间标准。其中,sRGB 是计算机屏幕常用的色彩空间标准,而 bt601 和 smpte170m 则是早期电视和视频技术中常用的色彩空间标准。
这些不同的色彩空间选项之间的差异主要体现在以下两个方面:
2.1色彩分布:不同的色彩空间标准对颜色的分布方式和亮度和色度分量的权重分配有所不同。比如,在 sRGB 色彩空间中,亮度和色度的分配比例是 0.2126、0.7152 和 0.0722,而在 bt601 和 bt709 中则是 0.299、0.587 和 0.114。
2.2色彩范围:不同的色彩空间标准对亮度和色度的取值范围也有所不同。比如,在 bt601 中,亮度的取值范围是 16-235,而在 bt709 中则是 16-235 或 0-255(取决于色彩范围选项)。
在实际的视频处理中,正确指定视频使用的色彩空间非常重要,因为不同的色彩空间之间可能存在差异,如果没有正确指定色彩空间,就可能导致视频颜色不准确、失真等问题。因此,在处理视频时,应该根据实际情况选择正确的色彩空间选项,并结合其他选项,如 -color_range、-color_primaries、-color_trc 等一起使用,以确保视频的颜色正确、准确和一致。
3.色彩范围:
mpeg: MPEG 色彩范围
jpeg: JPEG 色彩范围
tv: 完整范围(0-255)
pc: 标准计算机范围(16-235)
色彩范围则指视频中亮度和颜色的取值范围。完整范围使用 0-255 表示所有可能的取值,包括黑色(0)和白色(255),而标准计算机范围则使用 16-235 表示亮度范围,使用 16-240 表示色度范围,排除了极端的黑色和白色值,使亮度和颜色范围更加均衡。对于完整范围和标准计算机范围的区别,可以看作是类似于线性和对数缩放的区别,即标准计算机范围是对完整范围进行了对数缩放。
注意:色彩空间和色彩范围选项的可用性取决于视频的编码和容器格式。某些格式可能不支持特定的色彩空间或范围选项。