简介

YUV 文件是一种存储 视频原始数据 的格式,它不进行压缩(或仅轻度压缩),主要用于专业视频处理、图像分析、计算机视觉等领域。以下是关于 YUV 文件的详细说明:


1. YUV 是什么?

  • YUV 是一种颜色编码系统,与常见的 RGB(红绿蓝)不同,它将图像数据分成:
    • Y(亮度/Luma):决定图像的明暗信息(黑白部分)。
    • U & V(色度/Chroma):存储颜色信息(色彩饱和度、色调)。
  • 这种分离设计最初是为了兼容黑白与彩色电视信号,现在广泛用于视频压缩(如 H.264、H.265)和数字视频处理。

2. YUV 文件的特点

  • 原始数据:通常未经压缩,文件体积较大(例如 1 分钟 1080 p 视频可能占数 GB)。
  • 多种子格式:根据 UV 分量的采样方式不同,分为多种子格式:
    • YUV420:最常用(如 MP4、H.264 视频的底层存储),色度信息缩减采样以节省空间。
    • YUV 444:高质量无缩减(用于专业影视后期)。
    • 其他变体:YUV 422、NV 12 等。
  • 无标准封装:YUV 文件通常只是纯二进制数据流,需额外说明分辨率、采样格式才能正确解析。

3. YUV 文件的常见用途

  • 视频编解码开发:测试编码器/解码器的性能(如 FFmpeg 测试)。
  • 计算机视觉:人脸识别、运动检测等算法处理原始视频数据。
  • 影视后期:无损编辑或色彩校正时保留最大信息量。
  • 学术研究:图像处理论文中常用 YUV 序列作为测试素材。

4. 如何打开/处理 YUV 文件?

  • 专用工具
    • FFmpeg(命令行):可转换 YUV 与其他格式,或播放 YUV 文件(需指定分辨率)。
      ffplay -f rawvideo -video_size 1920x1080 -pixel_format yuv420p input.yuv
      
    • YUV Viewer(如 YUView):可视化分析 YUV 数据。
    • MATLAB/Python:通过 OpenCV 或自定义脚本处理。
  • 注意事项:必须提前知道文件的 分辨率、采样格式(如 YUV 420)和帧数,否则无法正确解析。

5. YUV vs. RGB

特性 YUV RGB
数据分离 亮度与色度分离 红绿蓝三通道混合
压缩效率 更高(适合视频编码) 较低
常见用途 视频存储、传输 图像显示、游戏渲染

如果需要处理 YUV 文件,建议先用工具(如 FFmpeg)确认其具体格式参数,再选择合适的软件操作。

关于 Planar

YUV 420 p 和 YUV 420 本质上是同一类色度采样格式,但 YUV 420 p 特指 YUV 420 的一种具体存储排列方式(Planar 平面格式)。二者的关系可通过以下维度详细说明:


1. 核心关系

  • YUV 420

    • 色度采样方式:指 UV 分量在水平和垂直方向均减半采样(每 4 个 Y 共享 1 组 UV)
    • 通用概念:不限定数据排列方式,仅描述采样规则
  • YUV 420 p

    • 具体实现形式:在 YUV 420 采样基础上,采用 Planar(平面)存储
    • 数据排列:Y、U、V 三个分量分别连续存储(先存所有 Y,再存所有 U,最后存 V)

2. 存储结构对比

YUV 420 p(Planar)

[YYYYYYYY...][UUUU...][VVVV...]  
  • 示例格式:I 420(Y→U→V)、YV 12(Y→V→U)
  • 特点
    • 分量完全分离,适合逐通道处理
    • 内存访问效率高,常用于视频编解码

其他 YUV 420 排列方式

  • YUV 420 sp(Semi-Planar)

    [YYYYYYYY...][UVUVUVUV...]  
    
    • 示例:NV 12(Y + UV 交错)、NV 21(Y + VU 交错)
    • 特点:UV 交错存储,适合 GPU 硬件加速
  • Packed 格式(较少用于 420)

    [Y0 U0 V0][Y1][Y2][Y3]...  
    
    • 示例:无主流 packed 420 格式(因采样特性不适合打包)

3. 文件与编码中的应用

  • FFmpeg 标识

    • -pix_fmt yuv420p 明确指定平面存储
    • -pix_fmt yuv420 可能被解析为默认的 420 p 或 420 sp
  • 实际文件扩展名

    • 通常 .yuv 文件默认为 YUV 420 p(需确认分辨率)
    • 摄像头输出的 NV 12(420 sp)也常被误称为 “YUV 420”

4. 技术选择考量

特性 YUV 420 p(I 420) YUV 420 sp(NV 12)
内存占用 相同(均节省 75%色度) 相同
CPU 处理效率 高(连续内存访问) 中等(需 UV 分离)
GPU 兼容性 需转换 直接支持(如 OpenGL)
常见场景 软件编码/算法处理 移动设备/硬件加速

5. 验证方法

若收到一个 “YUV 420” 文件,可通过以下方式判断具体格式:

  1. 计算文件大小

    • 分辨率 W×H 的 420 格式总大小应为 W×H ×1.5 字节(8-bit)
    • 若文件大小匹配,可能是 420 p 或 420 sp
  2. 二进制查看

    • 用 Hex 编辑器观察:
      • 若后半部分明显分两段(先全 U 后全 V)→ 420 p
      • 若后半部分交替出现 UV→ 420 sp
  3. FFmpeg 测试

    ffplay -f rawvideo -video_size 1920x1080 -pixel_format yuv420p input.yuv
    

    若画面异常,尝试替换 yuv420pnv12


总结

  • YUV 420 是色度采样规范,YUV 420 p 是其一种存储实现
  • 实际应用中需明确:
    ✓ 采样格式(420/422/444)
    ✓ 存储方式(p/sp/packed)
    ✓ 分量顺序(I 420 vs YV 12 vs NV 12)
  • 在无特别说明时,“YUV 420” 通常默认为 YUV 420 p(I 420)