视频编码技术——YUV
Posted 赵新政
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视频编码技术——YUV相关的知识,希望对你有一定的参考价值。
YUV格式相对于RGB 会有更好的存储效率,虽然图像上的品质会受到压缩的影响 ,但是传输速度会变快,且帧率刷起来之后看不出太多的压缩痕迹
1 . YUV定义
Y 用来描述亮度,UV用来描述影响色彩及饱和度
当然可以用另一个解释方法,Y仍然是亮度,U解释为Cb(蓝色分量),V解释为Cr(红色分量),具体下面看公式。
常用采样格式:4:2:0 4:2:2 不常用:4:4:4
所以遇到一些视频打不开的情况,可以先查看视频的YUV格式,然后转码成为标准420格式
单纯提取Y分量后,会看到灰度图的效果,即人眼对于亮度比色度更加敏感,所以这个是主通道!
U分量提取出来,图片蓝色分量
V分量,红色分量
实际上来讲,上面三张图,都是单纯取出分量后,转化到RGB的结果,不是直接填充,所以需要考虑二者如何转换
2 . YUV—>RGB
YUV:用于采集与编码
RGB:用于屏幕显示
RGB转成 YUV:
当然,UV都可以在把Y分量带进来计算,得到后面的小公式
YUV转成 RGB:
3 . YUV常见格式
1 YUV 444 :每个像素都拥有YUV三个分量,比较容易理解
2 YUV 422 :每个像素都会有Y分量,但是隔一个像素才会有UV分量
3 YUV 420 :每个像素都会有Y分量,但是U分量与V分量是各行出现,并且在每一行当中,隔一个才会有U或者V分量出现;可以这么理解:
第一行:Y:U:V 4:2:0
第二行:Y:U:V 4:0:2
4 . YUV数据量计算
在420情况下,每一行都有非Y的分量,二者比例是
Y:X(X=U or X=V) = 2:1
假设每行有4个像素,则:
RGB = 4 * 3分量 = 12
YUV = 4 * 1个Y + 2 * 1个X = 6
所以:
YUV = Y * 1.5
YUV = RGB / 2
视频是从之前黑白电视机开始的,所以会被集成过来,且存储更有优势,压缩率更高!
5 . YUV数据存储格式
对于YUV420,常见的存储格式如下(I420):
论述:
1 Y分量存在前方,后方才会存储UV分量,这样与黑白电视之类的需求非常契合,只需要读取前方数据即可
2 上图同色的Y对应同色的UV,比如Y1Y2,其中Y1与U1结合,Y2独立;对于Y7 Y8,其中Y7与V1结合,Y8独立。
概览存储格式分类:
Planar(平面存储):
I420: YYYY YYYY UU VV
YV12: YYYY YYYY VV UU(ios常用)
主要区别是UV的顺序问题
Packed(打包存储)
NV12 : YYYY YYYY UVUV
NV21 : YYYY YYYY VUVU(android常用)
移动端开发,摄像头采集以及硬件加速,都会受到这种编码的影响!
6 . YUV码流计算
大家注意,所谓1M带宽,基础单位是BIT,不是字节,网络是BIT位计算
RGB码流 = 分辨率 * 3 * 帧率
YUV420码流 = 分辨率 * 1.5 * 帧率
7 . YUV参考资料
以上是关于视频编码技术——YUV的主要内容,如果未能解决你的问题,请参考以下文章