分辨率
分辨率:X轴的像素个数乘以Y轴的像素个数
常见的宽高比:16:9/4:3,现在基本上都是16:9,不是这种两种的宽高比,则是非标准的,需要进行转换,否则会渲染时可能会出现问题
常见分辨率:360P/720P/1K/2K
注:上述这四种常见的分辨率都是16:9的,即:360P是640X360;720P是1280X720
帧率
帧率:每秒钟采集/播放图像的个数
动画的帧率是25帧/s
常见的帧率:15帧/s(一般用于实时通信,带宽较小),30帧/s,60帧/s(电影拍摄一般在60以上)
未编码视频的RGB码流
RGB码流=分辨率(宽x高)x3(Byte)x帧率
例如:1280x720x3x25=69120000,,约为69M
注:上述的3(Byte)是RGB的意思
YUV码流=分辨率(宽x高)x1.5(Byte)x帧率
图像的显示
图像的显示情况:
1.图像大小等于显示区域大小
2.图像小于显示区域(拉伸/留白)
3.图像大小大于显示区域(缩小/截断)
YUV
YUV:Y表示明亮度,UV的作用是描述影像色彩及饱和度
主要采样格式:YUV4:2:0(最标准、最常见的)、YUV4:2:2和YUV4:4:4
从上图可以看出YUV的各个分量,因此YUV也称YCbCr
RGB与YUV的关系:RGB用于屏幕图像的展示,YUV用于采集和编码(YUV存储的数据比RGB少)
RGB转YUV公式:
Y=0.299R+0.587G+0.114B
U=-0.147R-0.289G+0.436B=0.492(B-Y)
V=0.615R-0.515G-0.100B=0.877(R-Y)
YUV转RGB公式:
R=Y+1.140V
G=Y-0.394U-0.581V
B=Y+2.032U
YUV4:2:0
4:2:0并不意味着只有Y、Cb两个分量,而没有Cr分量,它实际指的是对每行扫描线来说,只有一种色度分量,它以2:1的抽样存储,相邻的烧苗行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行就是4:2:0,以此类推。
YUV数据量的计算:
YUV=Y*1.5=RGB/2
从上图可以看出先存储Y完后,后面存储的UV再与Y一一对应,所以黑白电视只要读取前面的Y数据就行了
YUV存储格式:
1、planar(平面)
I420:YYYYYYYY UU VV =>YUV420P
YV12:YYYYYYYY VV UU =>YUV420P (一般IOS用的都是这个)
2、packed(打包)
NV12:YYYYYYYY UVUV =>YUV420SP
NV21:YYYYYYYY VUVU =>YUV420SP(一般安卓系统用的都是这个)