什么是 YUV 格式? (从一个不会玩的初学者的角度来看)[关闭]

2024-02-16

视频质量指标称为VMAF https://github.com/Netflix/vmaf由 Netflix 评估 YUV 格式的视频。

但什么是YUV格式呢?为什么我无法使用声称可以播放几乎任何类型的视频格式(例如 x264 编码的 MP4 文件)的 VLC 来播放 YUV 格式的视频?

我读了维基百科,但还是不明白。


我的解释可能不准确,但我读起来很舒服维基百科上的 YUV https://en.wikipedia.org/wiki/YUV只有在我知道以下内容之后。

首先,让我们考虑一下显示器如何显示图像。每种颜色都可以用三种颜色来表示(即所谓的RGB模型),即红、绿、蓝。每个“红”、“绿”、“蓝”都可以在计算机中以1字节(8位)记录。因此显示器中的一个像素有 3 个字节(每个字节代表“红”、“绿”和“蓝”)信息。

人眼对亮度非常敏感,但对颜色不太敏感。我们可以利用它吗?于是就出现了颜色的YUV表示。 “Y”表示亮度(亮度),“U”和“V”表示色度(颜色)。 YUV 类似于 RGB,用于表示颜色。但是,既然我们可以用 RGB 模型来表示颜色,为什么还需要它呢?

因为文件大小很重要。在RGB模型中,我们必须使用3个字节(24位)来记录颜色,但在YUV模型中,如果我们使用yuv420p格式,我们可以将大小减半。您不必知道 yuv420p 是什么,这里的要点是,与使用 RGB 模型相比,使用 YUV 可以(非常容易)显着减小文件大小。

当您播放以 x264 编码的 MP4 文件时,您可以看到该文件以 yuv420 planar 解码(通过打开“编解码器信息”在 VLC 播放器中检查)。 VLC 需要元数据才能正确显示视频,这就是 MP4 之类的东西存在的原因。 YUV是原始数据,不包含需要的高度和宽度信息。 在这里查看如何玩它:在 VLC 播放器上播放 YUV https://stackoverflow.com/questions/20882375/playing-yuv-on-vlc-player请在此处查看有关为何需要元数据的说明:如何找出 YUV 4:2:0 文件中的分辨率和帧数? https://stackoverflow.com/questions/19677747/how-to-find-out-resolution-and-count-of-frames-in-yuv-420-file

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是 YUV 格式? (从一个不会玩的初学者的角度来看)[关闭] 的相关文章

  • 关于ffmpeg解码输出的YUV转RGB花屏问题

    现象 最近尝试基于ffmpeg封装一个dll 用于视频解码 然后将yuv转成RGB 用于在网页显示视频的画面 可是我将YUV转成RGB之后 发现花屏了 研究了很久 计算方式没有发现问题 代码如下 yuv420pToRGB24 pFrame
  • 【ffmpeg】YUV实践

    ffmpeg YUV实践 前言 生成YUV 使用摄像头采集到YUV数据 从现有的视频文件中提取YUV数据 播放YUV 播放Y分量 提取各分量 参考资料 个人简介 个人主页 一二三o 0 O的博客 技术方向 C C 客户端资深工程师 直播 音
  • android yuv数据处理_Android将camera获取到的YuvData在jni中转化为Mat方法

    Android将camera获取到的YuvData在jni中转化为Mat方法 发布时间 xff1a 2020 10 03 18 34 44 来源 xff1a 脚本之家 阅读 xff1a 154 作者 xff1a BrcLi Android中
  • 【opencv-3】YUV转opencv Mat格式

    int yuv to mat unsigned char data Mat image unsigned char srcYuv 61 data int indexY indexU indexV unsigned char Y U V un
  • YUV解析

    一般的视频采集芯片输出的码流一般都是 YUV 格式数据流 xff0c 后续视频处理也是对 YUV 数据流进行编码和解析 所以 xff0c 了解 YUV 数据流对做视频领域的人而言 xff0c 至关重要 在介绍 YUV 格式之前 xff0c
  • Android 视频 YUV i420格式转换为位图Bitmap

    import android renderscript Allocation import android renderscript Element import android renderscript RenderScript impo
  • 超分辨率重建-PNSR与SSIM的计算(RGB、YUV和YCbCr互转)

    RGB YUV和YCbCr 自己复现的网络跑出来的模型进行预测的时候 xff0c 不知道为啥算出来的结果比论文中要低好多 不论scale factor为多少 xff0c 我算出来的结果均普遍低于论文中给出的 xff0c PSNR大概低个1
  • 贴图问题,opengl,linux,windows,消除锯齿,摩尔纹,yuv 还是 rgb

    1 消除锯齿和摩尔纹 windows下使用d3d是很方便的 xff0c 基本不用设置很多东西 xff0c 就可以做到 xff0c 所以windows上最好使用d3d 但是linux上有所不同 摩尔条纹是两条线或两个物体之间以恒定的角度和频率
  • 图文详解YUV420数据格式

    原文地址 http www cnblogs com azraelly archive 2013 01 01 2841269 html 1 YUV简介 YUV定义 分为三个分量 Y 表示明亮度 Luminance或Luma 也就是灰度值 而
  • 从mpeg ts文件中提取I帧(5):I帧的解码

    找到含有I帧的pes后就可以对其进行解码 对I帧的解码我们使用ffmpeg 这里用到的版本是3 0 0 一 pes解码为yuv ffmpeg一般都是这个套路 直接上代码 int ffdecode pes uint8 t pes data i
  • CVOpenGLESTextureCacheCreateTextureFromImage 返回 -6683(kCVReturnPixelBufferNotOpenGLCompatible)

    我已经从视频帧中分别 提取 Y U V 数据并将它们保存在data 0 data 1 data 2 框架尺寸为640 480 现在我创建了pixelBuffer如下 void pYUV 3 data 0 data 1 data 2 size
  • 如何将 YUV 转换为 iOS 的 CIImage

    我正在尝试将 YUV 图像转换为 CIIMage 并最终转换为 UIImage 我在这些方面相当新手 并试图找出一种简单的方法来做到这一点 据我所知 从 iOS6 开始 YUV 可以直接用于创建 CIImage 但当我尝试创建它时 CIIm
  • 如何在Android中有效地实时操作YUV相机帧?

    我在从 Android 获取的 NV21 框架的感兴趣区域 中心 周围添加黑色 0 填充CameraPreview线程中的回调 为了避免转换为 RGB 位图和反向的开销 我尝试直接操作 NV21 字节数组 但这涉及嵌套循环 这也会使预览 处
  • 将 YUV420SP 转换为 YUV420P

    如何使用 ffmpeg sws scale 或其他有效方法将 YUV420SP 转换为 YUV420P 如果您使用 ffmpeg 中的 swscale lib 以下代码可能会对您有所帮助 static struct SwsContext s
  • 蟒蛇 | Numpy 数组图像转换

    我有一个具有形状的 Numpy 图像数组 1000 50 100 3 class numpy ndarray 其中包含 1000 个 RGB 图像 高度 50 宽度 100 通道 3 我想先转换RGB价值观YUV值并重新调整它们以获得yuv
  • 使用 gstreamer 将 YUVj420p 像素格式转换为 RGB888

    我使用 gstreamer 1 2 将帧从我的 IP 摄像头馈送到 opencv 程序 流是 640 368 YUVj420p 我想将其转换为RBG888以便能够在我的opencv程序中使用它 那么有没有办法使用 gstreamer 来进行
  • 将 YUY2 转换为 YV12

    我几乎可以肯定 这比我想象的要简单得多 但我在互联网上搜索的时间比我愿意承认的要长得多 试图找出冰箱如何转换这两种格式 我能够从无符号字节流 无符号字符 中提取 Y0 Cb Y1 Cr 数据 但我不知道这些字节是如何排列的YV12 http
  • 如何在Android上更快地将RGB565转换为YUV420SP?

    我需要显示一张jpeg图片 并将其转换为YUV420SP 首先我使用SkBitmap解析jpeg并显示它 然后我使用下面的代码在android上将RGB565转换为YUV420SP 但是转换640 480 RGB565图片花费了75ms 所
  • 使用opengl es着色器将YUV转换为RGB

    我想在 opengl es 着色器中仅使用一个包含 yuv 数据的采样器将 yuv 转换为 RGB 我的代码如下 1 我将 yuv 数据发送到纹理 GLES20 glTexImage2D GLES20 GL TEXTURE 2D 0 GLE
  • Android MediaCodec 输出格式:GLES 外部纹理 (YUV/NV12) 到 GLES 纹理 (RGB)

    我目前正在尝试在 Android 上开发一个视频播放器 但在颜色格式方面遇到了困难 Context 我通过以下标准组合提取和解码视频媒体提取器 媒体编解码器 因为我需要提取的帧可用作 OpenGLES 纹理 RGB 我设置了我的解码器 媒体

随机推荐