视频编解码——主流视频编码标准的发展(H.261/H.263/MPEG-1/MPEG-2/MPEG-4))
2021/4/28 10:25:28
本文主要是介绍视频编解码——主流视频编码标准的发展(H.261/H.263/MPEG-1/MPEG-2/MPEG-4)),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 制定标准的组织
- 两种编码方式
- 基于波形的编码
- 基于内容的编码
- H.261
- 系统图
- 信源编码器
- 复合编码器
- H.263
- MPEG-1
- 码流结构
- MPEG-2
- 码流结构
- MPEG-4
制定标准的组织
这些标准主要由两个组织制定。
- 国际电信联盟——ITU-T
- 国际标准化组织——ISO
目前世界上影响力最强的视频编码标准基本都出自于这两个组织。
除了这两个组织,还有
- Google——VP8/VP9
- Microsoft——VC-1
- 国产自主标准——AVS/AVS+/AVS2
两种编码方式
基于波形的编码
特点
编码的数据正对每一帧的图像包含的像素值,即采样像素的波形
方法
利用像素之间再时间与空间上的相关性,采用预测编码和变换编码结合的基于块的混合编码方法
代表
MPEG-1,MPEG-2,H.264,H.265等
这种编码方式是从编解码开始到现在,最主流的编码框架
基于内容的编码
特点
视频帧分城对立不同物体的区域,分别对其编码
方法
针对不同物体的形状、运动和纹理进行编码
代表
MPEG-4
H.261
诞生于1988年,是视频编码发展以来第一个里程碑。
是第一种采用“块结构的混合编码”方案的编码标准
目的
视频会议、可视电话等低码率视屏图像传输
数据格式
公共中间格式(Common Intermediate Format,CIF)
在H.261产生的时代,由于各国电视制式的不一致,是无法互通的。为了解决数据格式不兼容的问题,H.261定义了一种中间数据格式——CIF。
所以在使用H.261进行编码之前,首先转换为CIF格式然后再编码,接收端接收后再转为各自的格式。
每一帧的分辨率(亮度):
- CIF——352 x 288
- QCIF(quater)——176 x 144
系统图
信源编码器
H.264、H.265格式都是通过以下格式进行改进的
主要用到的技术如下
- 帧内编码/帧间编码
根据帧间相关性判定。相关性高使用帧间编码、相关性低使用帧内编码 - 帧间编码/运动估计
使用以宏块为基础的运动补偿预测编码。当前宏块从参考帧中查找最佳匹配宏块,并计算其相对偏移量(Vx,Vy)最为运动矢量;编码器使用DCT、量化编码当前宏块和预测宏块的残差信号 - 帧内编码
帧内编码直接使用DCT编码8 x 8像素值 - 环路滤波器
实际上是一个数字低通滤波器,滤除不必要的高频信息,以消除方块效应
复合编码器
符合编码器将不同层次的H.261语法元素编码为H.264的码流
-
帧层
由帧首和块组数据构成;帧首包括帧起始码(PSC)、帧计数码(TR)、帧类型(PTYPE)等 -
块组层
由块组首和宏块数据组成。块组首包括组七十码(GBSC)、块组编号码(GN)、块组量化步长等 -
宏块层
由宏块首和块数据构成;宏块首包括宏块地址码、宏块类型、宏块量化步长、运动矢量数据、编码模式等 -
块层
包括每个 8 x 8块的DCT系数按之字形扫描后的熵编码码流,以块结束符结尾
H.263
是相对于H.261的改进标准,相比于H.261有更好的压缩效率。
-
运动矢量
H.261的运动矢量是分配到每个宏块中的,即H.261对每一个MB分配一个运动矢量;而H.263支持每一个8 x 8块各自使用一个运动矢量 -
MV精度
相对于H.261只支持整数像素运动搜索,H.263的精度为1/2像素 -
双向预测模式
H.263支持B帧,使用前后双向预测模式 -
熵编码
采用算术编码算法,运算复杂度高,可显著降低码率 -
支持的图像格式
MPEG-1
ISO下属的移动图像专家组指定的早期视频压缩标准。
主要用于视频信息的存储、广播电视以及网络传输应用
-
作用
CD/VCD中存储音视频信息 -
码率
1.2~1.5MB/s -
图像类型
支持I、B、P帧。 -
- I帧:帧内编码帧,采用帧内编码,可作为P/B帧的参考帧
-
- P帧:前向预测帧,采用帧间编码,以I/P帧作为参考帧
-
- B帧:双向预测帧,参考前后两个方向的参考帧
-
图像显示顺序
码流结构
总体和H.261类似,采用分层的码流结构
相比于H.261,MPEG-1增加了条带层,每一个宏块所有的编码操作只能在一个条带内实现
条带层可以有效防止编码错误在一帧内扩散
MPEG-2
码流层次分三层:
- 基本流
ES,由视频编码的视频基本流和音频编码的音频基本流构成 - 打包基本流
PES (package element stream),为音视频ES分别打包 - 传输流、节目流
TS/PS,若干个PES进行服用后输出,分别用与传输和存储
DVD采用的是MPEG-2标准进行压缩的
MPEG-2是兼容MPEG-1的。所以DVD播放机可以播放VCD的光盘
MPEG-2格式支持逐行或隔行扫描视频,使用基于帧或场的编码。
- 档(profile)和级(level)
-
- 按照使用的编码工具定义了5个profile(SP(简单)/MP(主要)/SNP(信噪比可分级)/SSP(空间可分级)/HP(高级))
-
- 按照视频分辨率定义了4个级别(LL(低级)/ML(主级)/H440(高1440级)/HL(高级))
码流结构
ES流结构类似MPES-1,也分为图像序列层、图像组、图形、片、宏块和块层:
- 图像序列层
包括若干GOP,序列头包含起始码和序列参数等 - 图像组(GOP)层
包括若干图像,GOP头包括起始码、GOP标识等 - 图像层
包裹若干个Slice,图像头中包括起始码和图像参数等 - 片(Slice)层
最小的同步单位,包括若干宏块,Slice头中包括起始码、片地址、量化步长等信息 - 宏块(Macroblock)层
由4个亮度块和2个色度块组成,宏块头包括地址、类型、MV等信息
编码的时候会从上到下的进行封装,解码也会从上到下解封装
MPEG-4
ISO在1999年颁布的视频编码标准。
与MPEG-1、MPEG-4相比,MPEG-4更注重多媒体系统的交互性、灵活性和可扩展性
MPEG-4标准采用了基于对象的编码,其中视频对象主要定义为画面中分割出来的不同物体,每个物体由三类信息描述:运动信息、轮廓信息和纹理信息
这篇关于视频编解码——主流视频编码标准的发展(H.261/H.263/MPEG-1/MPEG-2/MPEG-4))的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南