视频基础知识:
RGB彩色原理:
RGB是指光学三原色红、绿和蓝,通过这3种的数值(0-255)改变可以组成其他颜色,全0时为黑色,全255时为白色。RGB是一种依赖于设备的颜色空间:不同设备对特定RGB值的检测和重现都不一样,因为颜色物质(荧光剂或者染料)和它们对红、绿和蓝的单独响应水平随着制造商的不同而不同,甚至是同样的设备不同的时间也不同。
RGB 工业显示器要求一幅彩色图像由分开的 R、G、B 信号组成,而电视显示器则需要混合信号输入,为了实现对这两种标准的兼容,NTSC(美国国家电视系统委员会)制定了 YIQ 颜色模型,它的主要优点是可以实现对彩色电视和黑白电视的兼容,即可以用黑白电视收看彩色电视信号。YUV 颜色模型则是在 YIQ 的基础上发展而来。
为什么需要YUV格式:
YUV,是一种颜色编码方法。常使用在各个视频处理组件中。三个字母分别表示亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),作用是描述影像色彩及饱和度,用于指定像素的颜色。Y’UV的发明是由于彩色电视与黑白电视的过渡时期。黑白视频只有Y视频,也就是灰阶值。与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。
什么是像素:
像素(Pixel):图像的最小单元,每个像素代表图像中的一个点,具有特定的颜色和亮度值。
分辨率、帧率、码率:
分辨率(Resolution):指图像中像素的密度,通常以宽度和高度来表示。较高的分辨率意味着图像具有更多的像素,因此可以显示更多的细节。
帧率:
视频其实就是一张张图片连续播放。那么就涉及到一个问题,一秒钟播放多少张图片?也就是一秒钟多少个数据帧,这个数字就是帧率。
码流:或者称为码率,只针对视频数据,单位时间内视频数据量大小,一般以秒为单位(KB/S)(码率是通过什么算法控制的 ?)
码率=视频数据大小/视频时间长度。
对于直播之类的计算,码流=视频传输数据量/传输时间。
在直播中,两种方式计算的码流应该是近似相等的,否则就会出现类似延时,卡顿等情况。
日常使用中,我目前见到的固定帧率的情况比较多,比如市面上一些智能摄像头之类的。
YUV数据存储格式区别:
YUV格式的两大类:平面(plannr)和紧凑(packed)。
对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随是存储所有像素点的V,或者是先v后u
对于packed的YUV格式,每个像素点的Y,U,V是连续交替存储的。比如YUV420P 其中P表示紧凑,YUV420SP其中的SP表示“半紧凑”
为什么画面显示绿屏:
在进行视频解码的过程中,主要使用到ffmpeg的由YUV到RGB的转换。
YUV -> RGB 公式如下:
R = Y + 1.402 (V - 128)
G = Y - 0.34414 (U - 128)- 0.71414 (V - 128)
B = Y + 1.772 (U - 128)
在解码失败的时候 YUV分量的值会进行0填充,根据公式可以得到:
R = 1.402 (- 128)= -126.598
G = - 0.34414 (- 128)- 0.71414 (- 128)= 135.45984
B = 1.772 (- 128)= -126.228
由于RGB的取值范围为 [0 - 255],所以转换后的RGB最终值是:
R = 0
G = 135.45984
B = 0
由于只有Green的分量值有效,所以显示为绿屏。
H264 I P B帧的关系:
I帧:关键帧,intra picture
帧就是采取帧内压缩的视频帧,它可以单独被解码成一张完整的图片。那么如果某个视频都是I帧,那么一个I帧就是一个GOP。当然一般情况下都不会这样做。
IDR帧:Instantaneous Decoding Refresh
及时解码刷新。我一般称它为immediate refresh ,立刻刷新,IDR帧必须是一个I帧,但是I帧不一定是IDR帧,这个帧出现的时候,是告诉解码器,可以清除掉所有的参考帧,这是一个全新的序列,新的GOP已经开始。
P帧:Predictive Picture(预测编码图像帧)
P帧又称帧间预测编码帧,需要参考前面的I帧才能进行编码。表示的是当前帧画面与前一帧(前一帧可能是I帧也可能是P帧)的差别。解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。与I帧相比,P帧通常占用更少的数据位,但不足是,由于P帧对前面的P和I参考帧有着复杂的依耐性,因此对传输错误非常敏感。
B帧:Bidirectionally predicted picture(双向预测编码图像帧)
B帧又称双向预测编码帧,也就是B帧记录的是本帧与前后帧的差别。也就是说要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是对解码性能要求较高。
帧只需考虑本帧;P帧记录的是与前一帧的差别;B帧记录的是前一帧及后一帧的差别,能节约更多的空间,视频文件小了,但相对来说解码的时候就比较麻烦。因为在解码时,不仅要用之前缓存的画面,而且要知道下一个I或者P的画面,对于不支持B帧解码的播放器容易卡顿。
什么是GOP?抖音的GOP一般多大:
GOP是group of picture。相邻的两个I帧之间的所有帧,就是一个GOP。
GOP其实就是一个场景的意思,从一个场景切换到另一个场景肯定会出现新的I帧,GOP序列,抖音的GOP一般是固定值20帧,视频文件的GOP一般可以设置为200-800帧。
指出“1080p”的意义:
1080p 格式,是标准数字电视显示模式,数字1080则表示垂直方向有1080条水平扫描线。通常1080p的画面分辨率为1920×1080
影响视频清晰度的指标有哪些?
帧率 码率 分辨率 量化参数(压缩比)
预测编码的基本原理是什么:
预测编码是数据压缩理论的一个重要分支。根据离散信号之间存在一定相关性特点,利用前面的一个或多个信号对下一个信号进行预测,然后对实际值和预值的差(预测误差)进行编码。如果预测比较准确,那么误差信号就会很小,就可以用较少的码位进行编码,以达到数据压缩的目的。
视频质量评价:
PSNR:一个纯客观的评价图片质量的参数,但是峰值信噪比高不代表人眼看到的视频/图片质量好。PSNR计算方式:
SSIM(Structural Similarity):结构相似性,是一种衡量两幅图像相似度的指标。SSIM使用的两张图像中,一张为未经压缩的无失真图像,另一张为失真后的图像。这个方法考虑到了人眼的主观感受,运算时包含了均值比较,对比度比较和结构比较。
VMAF(视频多方法评估融合,Video Multimethod Assessment Fusion) :由 Netflix 推出的视频质量评价工具,用来解决传统指标不能反映多种场景、多种特征的视频情况。该指标是目前互联网视频主流的客观视频评价指标,适用于衡量大规模环境中流播视频质量的观感
后续待补充