仅为本人学习记录,内容参考自网络。
一. I 帧、B帧、P帧
I帧表示关键帧,其自带了全部信息;解码时只需要本帧数据就可以完成。压缩率大约在7。
IDR帧表示即时解码刷新,I和IDR帧都是使用帧内预测的。它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I帧区别开,所以称为IDR帧,这样就方便控制编码和解码流程。 IDR帧的作用是立刻刷新,使错误不致传播,从IDR帧开始,重新算一个新的序列开始编码。而I帧不具有随机访问的能力,这个功能是由IDR承担。IDR会导致DPB(DecodedPictureBuffer 参考帧列表——这是关键所在)清空,而I不会。IDR图像一定是I图像,但I图像不一定是IDR图像。
P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据),压缩率大约在20。
B帧表示双向差别帧,也就是B帧记录的是本帧与前后帧的差别。解码B帧时,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但比较消耗CPU资源。压缩率能达到50。
二. GOP、码率、SNP、PSNR
码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。通俗一点的理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件,也就是说画面的细节就越丰富,但压缩率也就越小。
码流 x 时间 = 总容量
SNR:信噪比。PSNR:峰值信噪比,值越大,失真越少。