网站建设与管理专业学什么教育培训机构排名前十
在介绍编码器原理之前首先了解三个制定编码标准的组织:
1.国际电信联盟(ITU-T),这是一个音视频领域非常强的组织,规定了很多标准如h261,h262,h263,h263++。h263++也就是h264的前身。
2.国际标准化组织(ISO),这是一个庞大的官方组织,他们规定了很多标准,如分米,温度等,在ITU-T之后,他们也开始规定编码标准。如MPEG1,MPEG2,MPEG4。
3.GOOGLE,规定了vp8,vp9等。
ITU-T和ISO竞争了多年后,两个机构开始合作,h264/(MPEG4-part10 AVC)就是他们合作的产物。
h264是一系列编码工具的组合,主要包括:
1.帧内压缩
2.帧间压缩
3.环路滤波器,实际上是一个数字低通滤波器,滤除不必要的高频信息。
帧内压缩的过程如下:
数据源–》信源编码器–》视频复合编码器–》传输缓冲编码器–》传输编码器–》h264码流
什么是信源编码器:
它把一张图片分割成4x4,8x8,16x16等一个个宏块,其中h264最大的宏块是16x16,至于该分割成多大的宏块,是由具体算法决定的。
什么是视频复合编码器:
把一个个宏块,进行记录,分为三部分,第一首先记录宏块的顶层一行,然后记录最左边的一行,最后记录预测。预测有9种方向,如下图。因此可以知道宏块越大,压缩比也就越高。
h265之所比h264压缩比高就是它的预测方向比较多。
什么是传输缓冲编码器:
信源编码器编码数据放在这里,i和p帧编码后直接出码流,不会缓存,b帧会缓存等待P帧,一个p帧进去,编码里之前缓存的b帧一定都会被刷新出来。
帧内压缩就是对宏块的压缩。丢包为什么会花屏,其实是丢了宏块,解码器解析不到就变成花屏了。
帧间压缩:
帧内压缩就是对宏块的压缩。帧间压缩分为两种,一种是没有运动的宏块,一种是运动的宏块,帧间压缩就是对运动宏块坐标的记录,称为对运动适量的记录。
h264只是规定的码流的结构,码流结构确定了,那么解码器的结构也就确定了,但是编码器的实现可以不同,只要最终编码出的码流结构符合h264就可以了。
之所以引进265是因为,264很难对1080p以上的视频编码,编码出来的视频太大。264编码算法成熟时,人们对视频清晰度还没有那么高的要求,显示器的分辨率普遍还很低。
h265之所以能提升压缩率,根本原因有是因为宏块的大小变大了,最大128x128,而264最大16x16。那么是否宏块的左边和上边加上预测方向就会忽略掉很多细节,编码就会编码的不清晰了呢。需要注意的是h265是聪明的压缩算法,比如它先划分一个64x64的宏块,划分好后发现这个宏块里的像素细节比较多,颜色变化大,那么它就会再划分四个等大小的宏块,也就是32x32,然后再对每个宏块考虑是否还需要再次细分,如果需要每个宏块再划分为4个等大的宏块,这样树形递归下去,直到划分到最小的4x4大小的宏块。这就是h265能有效压缩视频的秘密。如下图:
但是如果只比较I帧的话,还是265稍微大一点点些,因为265采用的树形递归编码方式需要记录额外的信息。因此在I帧265并没有优势,但是它的P帧和B帧会比264的小非常多,比如P帧可能会是264P帧的1/10。
查看264视频宏块的划分可以用雷神的eyeView。
查看264视频宏块的划分可以用Elecard HEVCAnalyzer。
同时265和264还有一个更大的差别,那就是它在264的基础上增加了预测方向,使得对像素的预测更加精准。
H.265:所有尺寸的CU块,亮度有35种预测方向,色度有5种预测方向
H.264:亮度 4x4块9个方向,8x8块9个方向,16x16块4种方向,色度4种方向
265和264在码流结构也有不同,264第一帧里有两个分隔符(00 00 00 01),一个是sps,一个是pps,265则有三个分隔符,在最前面加了一个vps。vps是用来保存3D信息的,比如左眼偏光度,右眼偏光度。因此一个裸眼3D视频一定是265编码。