简介
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 或自定义脚本处理。
- FFmpeg(命令行):可转换 YUV 与其他格式,或播放 YUV 文件(需指定分辨率)。
- 注意事项:必须提前知道文件的 分辨率、采样格式(如 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” 文件,可通过以下方式判断具体格式:
-
计算文件大小:
- 分辨率
W×H
的 420 格式总大小应为W×H ×1.5
字节(8-bit) - 若文件大小匹配,可能是 420 p 或 420 sp
- 分辨率
-
二进制查看:
- 用 Hex 编辑器观察:
- 若后半部分明显分两段(先全 U 后全 V)→ 420 p
- 若后半部分交替出现 UV→ 420 sp
- 用 Hex 编辑器观察:
-
FFmpeg 测试:
ffplay -f rawvideo -video_size 1920x1080 -pixel_format yuv420p input.yuv
若画面异常,尝试替换
yuv420p
为nv12
。
总结
- 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)
评论