• 定义
  • 区别
    • 区别的表现
    • 区别的缘由
      • 灰阶
  • 总结

定义

下面是两者在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 rangesAVCOL_RANGE_JPEG        = 2, ///< the normal     2^n-1   "JPEG" YUV rangesAVCOL_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全部显示纯白,中间的过渡全部损失。

(上面这一段是从“液晶电视与液晶显示器的区别”中截取的一段)

总结

没啥太大的区别。
如果偏色不严重,你也可以对客户解释说是显示器的色差,而不是你的程序的问题。

AV_PIX_FMT_YUV420P与AV_PIX_FMT_YUVJ420P相关推荐

  1. FFmpeg与libx264接口源代码简单分析

    ===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...

  2. 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇...

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  3. ijkplayer项目

    ijkplayer项目 环境配置 NDK全称:Native Development Kit. 1.NDK是一系列工具的集合.NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动 ...

  4. 【FFmpeg】编码h.264时,支持的像素格式pix_fmt

    1.简述 使用FFmpeg对视频编码时,编码器格式AVCodecContext->pix_fmt(类型 enum AVPixelFormat)不是什么格式都支持的.首先x264只支持YUV格式, ...

  5. deprecated pixel format used, make sure you did set range correctly

    deprecated pixel format used, make sure you did set range correctly udp传输模式可能报这个警告, 方法1: ffmpeg - sw ...

  6. ffmpeg图片压缩为视频

    https://bbs.csdn.net/topics/390430857 这个代码比较少:自己封装的: 这个使用opencv读图片: https://blog.csdn.net/wootengxjj ...

  7. ffmpeg 把视频解码成jpg

    这是一个h264视频解码的小demo,先把h264转成yuv,然后再把yuv转成jpg #include <iostream>int Frame2JPG(AVPacket packet, ...

  8. ffmpeg sws_scale函数详解

    1. 介绍 如果想在两个AVPixelFormat之间转换,例如将YUV420P 转换到YUV422,亦或者是要改变其大小,放大缩小什么的,就要用到ffmpeg中的swscale函数了,此版本基于ff ...

  9. FFmpeg源代码简单分析:avcodec_open2()

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

最新文章

  1. OpenCASCADE:可视化简介
  2. 独家!三代Ryzen国行价格来了:12核3999
  3. 分布式锁的几种实现原理
  4. 【Java并发编程】16、ReentrantReadWriteLock源码分析
  5. PAT-乙级-1035 插入与归并
  6. 【iOS开发-35】有了ARC内存管理机制,是否还须要操心内存溢出等问题?——面试必备...
  7. 加速你的vs.net开发环境
  8. Win10巧用自带输入法轻松打出特殊字符
  9. php 将中文字符转英文字母_php 中英文语言转换类
  10. 基于SDN网络的优化技术和QoS研究分析(二)
  11. Java进阶学习资料,java小程序开发面试题
  12. python 小于号和大于号同时使用
  13. 前端VUE图片预加载
  14. python如何画散点图
  15. 最窄770px最宽1024px的经典布局研究
  16. java 24字母_java 时间格式化中的模式字母
  17. 【嵌入式Linux应用开发】温湿度监控系统——绘制温湿度折线图
  18. 报错解决Error parsing Mapper XML
  19. Processing 安装外部库 Box2d
  20. 小程序的自定义头,左上角显示图标

热门文章

  1. 当BERT-whitening引入超参数:总有一款适合你
  2. PyTorch GPU计算
  3. 【微信小程序】添加插件 并配置
  4. 子曾经曰过,时过境迁。
  5. 8、【蜗牛爬井】井里有一只蜗牛,他白天往上爬5米,晚上掉3.5 米,井深56.7米,计算蜗牛需要多少天才能从井底到爬出来。
  6. lucky-canvas轮盘抽奖demo
  7. lucky-canvas抽奖插件-大转盘-九宫格-老虎机
  8. 男人不知道的15件事
  9. Word里面公式在行距为固定值20磅时显示不全部
  10. Redis常用数据类型Set集合