H264学习(一)之前几种编码介绍
来源:互联网 发布:ubuntu terminal替换 编辑:程序博客网 时间:2024/05/29 11:48
视频编码
- 时间冗余 :相邻视频帧之间的内容相似,存在运动关系
- 空间冗余:视频中某一帧内部的相邻像素存在相似性
- 编码冗余:视频中不同数据出现的概率不同(熵编码)
- 视觉冗余:人眼对视频系统中不同方面的敏感度不同
机构
ITU-T 下属 VCEG 视频编码专家组 H.264
ISO MPEG MPEG4
JVC 前两家联合
编码方式
- 基于波形的编码 MPEG-2 H.264
- 基于内容的编码:MPEG-4
编码技术
- 预测编码:传输预测像素值与实际像素值之差,利用时间或空间相邻像素之间较强的相关性
- 帧内预测:预测值与实际值位于同一帧内,用于消除图像的空间冗余。压缩效率较低,独立帧编码
- 帧间预测:实际值位于当前帧,预测值位于参考帧,用于消除图像的时间冗余,压缩效率较高,P B有可能采用帧间编码,也可以是帧内编码
- 变换编码:将像素由空间域变化成频域,,针对变换系数进行编码
- 正交变换:DCT变换、KL变换
- 熵编码:利用信源的统计特性进行压缩编码
- 常用方法:变长编码、算数编码
编码发展
其他还有google:VP8/Vp9
微软 VC-1
国产自主标准 AVS/AVS+/AVS2
H.261信源编码器
- 帧内编码/帧间编码判定:根据帧间相关性判定,相关性高使用帧间编码,相关性低使用帧内编码
- The prediction error (INTER mode) or the input picture (INTRA mode) is subdivided into 8 pel by 8 line blocks which
are segmented as transmitted or non-transmitted.不论是帧间还是帧内,注意帧间编码输入的是预测残差,分为8*8的块, Further, four luminance blocks and the two spatially corresponding colour difference blocks are combined to form a macroblock 四个亮度块和两个色度块组成一个宏块(4:1:1)
- 帧间编码/运动估计
- 每一个宏块接受一个运动矢量,每个运动矢量的垂直和水平分量有一个不超过+-15的整数值
- 这个矢量用于宏块中的四个亮度块,对矢量的两个分量区1/2,后,也用于宏块中的两个色度块
- 运动矢量的分量取正值,表示预测的形成取自从前一帧图像的像素
- 帧内编码
- 环路滤波器:数字低通滤波器,滤除不必要的高频信息,消除方块效应
- 二维空间滤波器FIL 使用于8*8的块
- 滤波器可以分为一维垂直和水平函数,
H.261复合编码器
- picture->group of blocks (GOB)->macroblock(MB)->block
- picture layer :picture header 后面跟着GOBS数据,picture start code (PSC 20 bits),Temporal reference (TR) (5 bits),Type information (PTYPE) (6 bits),Extra insertion information (PEI) (1 bit),Spare information (PSPARE) (0/8/16 . . . bits)
- 详见H261编码规范
H263标准
- H263对于H261的改进
- 运动矢量:相对于H261对每一个MB分配一个运动矢量,H263支持每一个8*8块各自使用的一个运动矢量
- MV精度:相对于H261只支持整数像素运动搜索,H263精度为1/2像素
- 双向预测模式:H263支持B帧,使用前后双向预测
- 熵编码采用算术编码,运算复杂度高,降低码率
- H263支持的图像格式
- sub-QCIF QCIF CIF 4CIF 16CIF(1480*1152)CIF是一种中间格式 H261支持QCIF CIF
- H263和H264编码性能比较
- 在输出码率大致相等的情况下,分析H263和H264编码的信噪比SNR
- 在具有相同编码信噪比SNR的情况下,分析H263和H264的输出码率
MPEG2标准
- MPEG-2码流层次,共分为三层:
- 基本流:ES
- 打包基本流:PES 对视音频ES分别打包
- 传输流 节目流:TS/PS
- profile和llevel
- 按照使用的编码工具不同,定义了5个profile
- 按照视频分辨率定义了4个级别
- 支持逐行或隔行扫描视频,使用基于帧或场的编码
- MPEG-2的ES流结构类似于MPEG-1 分为图像序列层(若干GOP)、图像组(GOP)、图像层(若干slice)、片(slice)、宏块(macroblock由亮度块和色度块组成)和块层(亮度块和色度块)
0 0
- H264学习(一)之前几种编码介绍
- AVC/H264编码教程(一)
- ffmpeg 实现视频h264编码 (一)
- 在BF561上实现h264编码的几种方案
- 几种编码格式介绍
- H264学习(二)编码方法和编码工具简介
- H264视频压缩编码标准(一)
- H264视频压缩编码标准(一)
- easydss与h264编码算法由浅入深(一)
- H264学习笔记(1):视频压缩编码的基本原理
- H264学习笔记(1):视频压缩编码的基本原理
- H264学习笔记(1):视频压缩编码的基本原理
- 几种常用编码及其用法介绍
- 几种编码的形式的介绍
- 几种编码的形式的介绍
- 对一帧YUV进行H264编码
- 嵌入式linux------ffmpeg移植 编码H264(am335x编码H264)
- 视频编码(H264概述)
- 聊一聊PV和并发、以及计算web服务器的数量的方法
- OpenSceneGraph实现的NeHe OpenGL教程 - 第四十七课
- poj1321棋盘问题
- git add to index 无效
- hdu1179 Ollivanders: Makers of Fine Wands since 382 BC(二分图模板)
- H264学习(一)之前几种编码介绍
- 浅谈getWidth()和getMeasureWidth()区别
- IOC容器注入依赖
- HashMap的工作原理-hashcode和equals原理的再次深入
- $.ajax()方法详解
- highcharts小技巧
- WebApp <meta>函数
- 对自己别手软
- 4-7 在一个数组中实现两个堆栈 (20分)