定义
下面是两者在ffmpeg中的定义
AV_PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
AV_PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting color_range
注:这里不讨论相同点。
区别
区别的表现
两者的不同在于,颜色空间不同。
AVCOL_RANGE_JPEG
/**
* MPEG vs JPEG YUV range.
*/
enum AVColorRange {
AVCOL_RANGE_UNSPECIFIED = 0,
AVCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges
AVCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges
AVCOL_RANGE_NB, ///< Not part of ABI
};
YUVJ420P的字面含义是“使用了JPEG颜色范围的YUV420P,像素使用表示颜色的数值范围发生了变化。
YUV420p的像素颜色范围是[16,235],16表示黑色,235表示白色
YUVJ420P的像素颜色范围是[0,255]。0表示黑色,255表示白色
从这里来看,貌似是YUVJ420P表示的更准确一下。
区别的缘由
YUV420p对应的是电视。
YUVJ420P对应的是显示器。
灰阶
何谓灰阶?通常来说,液晶屏幕上人们肉眼所见的一个点,即一个像素,它是由红、绿、蓝(RGB)三个子像素组成的。每一个子像素,其背后的光源都可以显现出不同的亮度级别。而灰阶代表了由最暗到最亮之间不同亮度的层次级别。这中间层级越多,所能够呈现的画面效果也就越细腻。以8bit面板为例,能表现2的8次方,等于256个亮度层次,我们就称之为256灰阶。LCD屏幕上每个像素,均由不同亮度层次的红、绿、蓝组合起来,最终形成不同的色彩点。也就是说,屏幕上每一个点的色彩变化,其实都是由构成这个点的三个RGB子像素的灰阶变化所带来的。
电脑如果想显示准确的色彩,那么必须要0-255灰阶全部齐全。灰阶的损失,就意味着色彩的损失。 对于PC主机,灰阶的输出是0-255。灰阶输出为0的情况下,显示全黑画面;灰阶为255的情况下,显示全白画面。液晶显示器为了适应PC主机,所可接受的灰阶信号范围同样是0-255。
256个灰阶输出图,如果PC接电视,必然会有13%的灰阶损失 而液晶电视是不同的,它的灰阶范围是16-235,当接收到信号16时,液晶电视将其还原成白色;当接收到信号235时,显示全白画面。电视的输入设备,比如说有线电视信号、DVD影碟机等输出的也是16-235的灰阶信号。 液晶电视如果接收到了低于16的信号,会被认为是干挠,将不被显示;如果接收到了高于235的信号,大部分液晶电视只能做削波处理,即仍当做235信号来处理。简单点说,就是0-15全部显示纯黑,236-255全部显示纯白,中间的过渡全部损失。
(上面这一段是从“液晶电视与液晶显示器的区别”中截取的一段)
总结
没啥太大的区别。
如果偏色不严重,你也可以对客户解释说是显示器的色差,而不是你的程序的问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2015-01-05 Darwin Streaming Server Relay Setting
2015-01-05 Darwin Streaming Server 6.0.3安装、订制、插件或模块
2015-01-05 shell脚本中常见的一些特殊符号和作用详解
2012-01-05 JavaScript:prototype属性使用方法
2012-01-05 关于JavaScript中apply与call的用法意义及区别
2012-01-05 Javascript的this用法总结