我们都知道视频是由图片构成的,就像早期的胶片电影一样,一幅幅图片连续播放就形成了视频,在视频中我们管这些图片叫帧。在x264中有三种基本的帧类型:I帧、P帧和B帧。
1.I帧
I帧(I frame),又称为内部画面(intra picture),I帧通常是每个GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。在MPEG编码的过程中,部分视频帧序列压缩成为I帧;部分压缩成P帧;还有部分压缩成B帧。I帧法是帧内压缩法,也称为“关键帧”压缩法。————百度百科
也就是说I帧其实是图片编码的,类似于JPEG编码,可以理解为电影中的胶片。而且I帧的生成是没有参考前后帧的,他只是作为参考点而存在,其他类型的帧都是以他为原型经过适当编码而来的。
2.P帧
P帧由在它前面的P帧或者I帧预测而来,它比较与它前面的P帧或者I帧之间的相同信息或数据,也即考虑运动的特性进行帧间压缩。P帧法是根据本帧与相邻的前一帧(I帧或P帧)的不同点来压缩本帧数据。采取P帧和I帧联合压缩的方法可达到更高的压缩且无明显的压缩痕迹。
P帧是由前面的帧预测而来的,打个比方,I帧就是父母,P帧相当于孩子,孩子还可以再生孩子,一切的起源肯定是父母,也就是I帧。
3.B帧
B帧法是双向预测的帧间压缩算法。当把一帧压缩成B帧时,它根据相邻的前一帧、本帧以及后一帧数据的不同点来压缩本帧,也即仅记录本帧与前后帧的差值。只有采用B帧压缩才能达到200:1的高压缩。一般地,I帧压缩效率最低,P帧较高,B帧最高。
一般视频的帧率为23,有的甚至到了30,也就是说一秒钟有23帧的画面,除非那部电影的场面相当动作,不然帧与帧之间的差别会相当小。相比较P帧的前向预测,B帧的前后双向预测所计算出来的值会更小,所以他的体积比P帧小很多,压缩率也最高。
最后来个总结,I帧是关键帧,是类似于图片形式的存在;P帧是前向预测帧,由前面的帧预测而来;B帧是前后向预测帧,由前一帧和后一帧预测而来。在视频编码中这三种帧都是很重要的,只有把这三种帧合理分配好才能很好的编码视频。如果I帧太多,视频清晰度会相当不错,但体积会比较大;太少也不行,I帧是参考帧,其他两种帧都是间接或直接参考I帧而来的,参考太少的话画面很容易走样,变得模糊。
就这些了,x264是一个庞大的系统,慢慢学吧。