音视频基础
像素:
像素是一个图片的基本单位,pix是英语单词picture的简写,加上英
语单词“元素element”,就得到了“pixel”,简称px,所以“像素”有“图像元素”之意。
分辨率:
是指图像的大小或尺寸。比如1920x1080。
常见分辨率:360P(640x360)、720P(1280x720)、1080P(1920x1080)、4K(3840x2160)、8K(7680x4320)
位深:
是指在记录数字图像的颜色时,计算机实际上是用每个像素需要的位深来表示的。比如红色分量用8bit。
帧率:
在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。比如25fps表示一秒有25张图片。
码率:
视频文件在单位时间内使用的数据流量。比如1Mbps。
Stride:
指在内存中每行像素所占的空间。为了实现内存对齐每行像素在内存中所占的空间并不一定是图像的宽度。
2 RGB、YUV深入讲解
RGB:红R、绿G、蓝B三基色。
YUV:“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma)。
打包(packed)格式:将每个像素点的Y、U、V分量交叉排列并以像素点为单元连续的存放在同一数组中,通常几个相邻的像素组成一个宏像素(macro-pixel)
平面(planar)格式:使用三个数组分开连续的存放Y、U、V三个分量,即Y、U、V分别存放在各自的数组中。
YUV采样表示法
YUV采用A:B:C表示法来描述Y,U,V采样频率比例,下图中黑点表示采样像素点Y量,
空心圆表示采样像素点的UV分量。主要分为 YUV 4:4:4、YUV 4:2:2、YUV 4:2:0 这几种常用的类型.
4:4:4 表示色度频道没有下采样,即一个Y分量对应着一个U分量和一个V分量。
4:2:2 表示 2:1 的水平下采样,没有垂直下采样,即每两个Y分量共用一个U分量和一个V分量。
4:2:0 表示 2:1 的水平下采样,2:1 的垂直下采样,即每四个Y分量共用一个U分量和一个V分量。
RGB和YUV的转换
通常情况下RGB和YUV直接的相互转换都是调用接口实现,比如Ffmpeg的swscale或者libyuv等库。
主要转换标准是 BT601 和 BT709。
8bit位深的情况下
◼ TV range是16-235(Y)、16-240(UV) , 也叫Limited Range
◼ PC range是0-255,也叫Full Range
◼ 而RGB没有range之分,全是0-255
YUV(256 级别) 可以从8位 RGB 直接计算:
Y = 0.299*R + 0.587*G + 0.114*B;
U = -0.169*R - 0.331*G + 0.5 *B ;
V = 0.5 *R - 0.419*G - 0.081*B;
反过来,RGB 也可以直接从YUV (256级别) 计算:
R = Y + 1.402 (Y-128)
G = Y - 0.34414 (U-128) - 0.71414 (U-128)
B = Y + 1.772 (V-128)
从YUV 转到 RGB 如果值小于0要取0,如果大于255要取255