H264帧结构
(1)为什么图像能编码
图像冗余信息:空间冗余:指一副图片的冗余一副图片中的像素都是一样的。
图像内部相邻像素之间存在较强的相关性多造成的冗余,图像内部相邻像素之间存在较强的相关性多造成的冗余。同一景物表面上采样点的颜色之间往往存在着空间连贯性,但是基于离散像素采样来表示物体颜色的方式通常没有利用这种连贯性。可借助其相邻像素的灰度值进行推断是否存在空间冗余,它是是静态图像中存在的最主要的一种数据冗余。 例如:图像中有一片连续的区域,其像素为相同的颜色,空间冗余产生。
时间冗余:上一秒和下一秒,一帧和一帧内容都是一样的。
视频图像序列中的不同帧之间的相关性所造成的冗余。视频图像序列中的不同帧之间的相关性所造成的冗余, 大部分相邻图片间的对应点像素都是缓慢过度的。
视频编码关键点:压缩比,算法复杂度,还原度
压缩前后文件大小之比,越高越好,但受速度、消耗资源等的影响;
压缩分为:软件压缩(CPU压缩),DSP压缩(硬件压缩)
(2)H264分为2大部分:VCL和HAL
VCL是视频编码部分关心如何视频压缩
NAL是关心编码后如何被网络传输
(3)H264相关概念
宏块 MB macroblock 指多个像素组成的一块,在一帧图像有区域相似性 图像有特点在不同的小块有相似性,所以把图像分为不同小块,在同一宏块中它们的像素严重的要比较高,视频压缩的基本单元。
片 slice 是比MB大一个东西,一帧就是一副图像由一个或多个片构成
像素->宏块->片->帧->序列->码流
帧 frame
I帧 B 帧 P帧
I帧是没有参考别人的帧, B帧P帧是参考帧做了时间冗余的优化,也就是说这一帧的图像不光跟这一帧有关还跟前一帧或后一帧有关。I帧可以理解为起始帧,只跟这一帧有关表示关键帧。
原始图像第一帧压缩 帧内空间压缩,压缩比例不大。
第二帧进行时间压缩,记录和第一帧的差异,得到第二个帧内容。参考帧就是参考前面得到帧还原。
第三帧又以第二帧参考进行还原。
假如这一帧是p帧只参考前面的帧,不参考后面的。解码P帧时参考前面的帧。
B帧是既参考前面的帧又参考后面的帧,假如第三帧为B帧在解码时就得参考第二帧和第四帧。视频编码时视频的原始数据已经有了,所以编码第三帧时可以参考第四帧,跟哪个像重点参考。
帧率(fps)越高码流大