视频编码的方法和采用的信息源有关,如果采用“一幅图像由许多像素构成”的信息源模型,这种信源模型的参数就是每个像素的亮度和色度的幅值。对 这些的压缩称为基于波形的编码。如果采用一个分量有几个物体构成的信源模型,这种信源模型的参数是各种物体的形状、纹理、运动。对这些参数进行压缩的技术 成为基于内容的编码。由此可见,根据采用的信源模型,视频编码分为两大类:基于波形的编码和基于内容的编码。它们利用不同的压缩编码方法,得到相应的量化前的参数,再对这些参数进行量化,用二进制码表示其量化值;最后进行误伤编码进一步压缩码率。解码则为编码的逆过程。
I帧——关键帧,接收的第一个数据,解码时仅用I帧的数据就可重构完整图像;后续P帧只传递与I帧画面相差别的数据.
P帧——P帧由在它前面的P帧或者I 帧预测而来,它比较与它前面的P帧或者I帧之间的相同信息或数据,也即考虑运动的特性进行帧间压缩。P帧法是根据本帧与相邻的前一帧(I帧或P帧)的不同点来压缩本帧数据(解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面,也就是差别帧)
B帧——双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。
H.264的系统编码流程图如下(转):
Stream:音视频数据
Frames:帧(Stream中的一个单元)
Packet:Stream的raw数据
Codec:Coded + Decoded
解码基本流程:
1、 OPEN video_stream FROM video.avi
2、 READ packet FROM video_stream INTO frame
3、IF frame NOT COMPLETE GOTO 2
4、 DO SOMETHING WITH frame
5、 GO BCAK TO 2
解码流程图(转):