音视频探索(1):浅析YUV颜色空间

本文详细介绍了YUV存储格式与采样方式,包括YUV420的三种采样格式。重点分析了摄像头设备输出的NV21和YV12格式,以及编码器所需的COLOR_FormatYUV420SemiPlanar和COLOR_FormatYUV420Planar格式。此外,还探讨了不同YUV格式之间的转换方法,提供了Java和C/C++的转换代码实现。
摘要由CSDN通过智能技术生成

1. YUV存储格式与采样

1.1 YUV存储格式

 YUV是一种亮度信号Y和色度信号U、V是分离的色彩空间,它主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。 YUV格式分为两种类型:Packed类型和Planar类型。

  • Packed类型:是将YUV分量存在在同一个数组中,每个像素点的Y、U、V是连续交错存储的;
  • Planar类型:是将YUV分量分别存放到三个独立的数组中,且先连续存储所有像素点的Y,紧接着存储所有像素点的U,最后是所有像素点的V。

1.2 YUV采样方式

 YUV码流的存储格式与采样方式密切相关,目前主流的采样方式有如下三种:YUV444、YUV422、YUV420,其中,YUV444采样是每一个Y对应一组UV分量,每个像素(YUV)占32Bits;YUV422采样是每两个Y共用一组UV分量,每个像素占16bits(Y占8bits、UV分量占8bits);YUV420采样是每四个Y共用一组UV分量,每个像素(YUV)占16bits或者12bits。三种采样格式表示如下图:

2. 常见YUV420颜色格式内存分析

2.1 摄像头设备输出的颜色格式

 考虑到摄像头设备种类很多,比如手机摄像头、USB摄像头、WIFI摄像头等,输出图像涉及到的YUV颜色格式也有所区别,因此这里我就选择开发中时常接触的手机摄像头来讲解。关于手机自带Camera采集图像的YUV颜色格式,可以通过Camera.Parameters.getSupportedPreviewFormats ()方法获取Camera支持的颜色格式。API介绍如下:

 从getSupportedPreviewFormats ()方法可知,手机自带Camera主要支持NV21和YV12两种YUV颜色格式,其中,YV12引入于API12。下面我们着重分析下这两种格式的特征以及内存存储特点:
 

【腾讯文档】FFmpegWebRTCRTMPRTSPHLSRTP播放器-音视频流媒体高级开发-资料领取

                                https://docs.qq.com/doc/DYU5ORlBOdkpCUkNxicon-default.png?t=M85Bhttps://docs.qq.com/doc/DYU5ORlBOdkpCUkNx


 

(1) NV21:YYYYYYYY VUVU

从android/graphics/ImageFormat.NV21中可知,NV21是手机自带Camera默认的预览格式,即采集图像颜色格式为NV21。NV21是一种半平面(Semi Planner)格式,Y分量占一个平面空间,VU交叉存储占一个平面空间,4个像素的Y分量共用一个VU分量。示意图如下:

在内存中的存储:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值