MPEG基础
首先简单介绍一下 MPEG 是什么: MPEG 是 Motion Picture Expert Group 的缩写,简单讲就是个行业里的组织,专门对数字内 容做出业界规范的组织。其实从 MPEG1 开始我们就广泛认识到这个组织和他们的标准了。之后便是MPEG2,具体代表是DVD。知道现在都是主流数码格式。 说到这里大家应该开始明白MPEG 这个组织其实他的责任就是推广每一代新的数字媒体规范或是规格,而不是实际的产品。
我们要讨论 Xvid 和 H.264 同属于 MPEG4 格式。从名字就可以看出来她是高于 MPEG1、2 的新一代数字媒体格式 具体规格如下:
- ISO 14496-1 (Systems) - 户动界面(有点像 DVD 里的菜单)
- ISO 14496-2 (Video) - ASP (Advanced Simple Profile)就是其中一种,代表产品有 Xvid, Divx5 等等。
- ISO 14496-3 (Audio) - AAC (Advanced Audio Codec)。
- ISO 14496-10 (Video) - Advanced Video Coding (AVC),也被叫做 H.264。代表产品有 x264。(看好这里,不要把 h.264 和 x264 搞混了,一个是规格的名字,一个是开源代码的兼容编 码器,一个有一点,一个没有一点)
- ISO 14496-14 (Container) - 文件格式, 后缀名为.MP4。 这个 MP4 规格唯一官方指定的格式。
- ISO 14496-17 (Subtitles) - 字幕。
AVC/H.264基础
AVC/H.264 是 MPEG-4 标准所定义的最新,同时也是技术含量最高、代表最新技术水平的 视频编码格式之一。AVC/H.264 视频编码由 ISO(International Organization for Standardization) 的 MPEG (Moving Pictures Experts Group)和 ITU(International Telecommunication Union)的 VCEG (Video Coding Experts Group) 两个组织于 2003 年最终定稿。 而 AVC/H.264 标准本身则是由包括来自 MPEG 和 VCEG 专家的 Joint Video Team(JVT) 开发。 ISO 14496-10 (Video) - Advanced Video Coding (AVC) 从MPEG 的角度来说,这个标准叫做MPEG-4 Part10 (ISO 14496-10)从 ITU 的角度来说, 这个标准叫做 H.264 (ITU 文档编号)作为这个标准的 。 “官方名称” Advanced Video Coding , (AVC)是 MPEG 由 Advanced Audio Coding(AAC)这个音频格式的视频副本确定的。
AVC/H.264 Profiles AVC/H.264 规定了多种不同的 Profile:最低 Profile、主要 Profile、扩展 Profile、高端 Profile (这些 Profile 本身还要划分数个等级) 。
-最低 Profile, 也叫做底线 Profile (Baseline Profile) 支持 I/P 帧, 只支持无交错 (Progressive) 和 CAVLC;
-扩展 Profile (Extended Profile)支持 I/P/B/SP/SI 帧, 只支持无交错 (Progressive) CAVLC;
-主要 Profile(Main Profile)提供 I/P/B 帧,支持无交错(Progressive)和交错(Interlaced) , 同样提供对于 CAVLC 和 CABAC 的支持;
-高端 Profile(High Profile,也叫 FRExt)在主要 Profile 的基础上增加了 8x8 内部预测、自 定义量化、无损视频编码和更多的 YUV 格式(如 4:4:4)。
===========================具体技术细节,不感兴趣可忽略=========================
或许只有在将来才能知道哪些 Profile 或哪些功能会成为 DVDRIP 的主流, 但是我猜想会是 Main 或是 High Profile,包含下面的一些功能:
CAVLC/CABAC:
AVC/H.264定义了两种编码方法:CAVLC(上下文自适应变长编码)和CABAC(上下文自适应二进制算术编码)。这两种编码比MPEG-4 ASP的熵编码比特流语法(宏块类型,移动向量+参考指数)更加先进。
CAVLC是AVC/H.264的默认方法,它具有强大的数据压缩能力,能够额外的降低10-15%的码率(特别是高码率的情况下)。CABAC相对于CAVLC而言,它是一种无损的编码方法,因此它不会降低视频质量,但会降低编/解码速度。
Loop/Deblocking Filter:
相对于预过滤(例如在输入时使用的avisynth)或后期处理过滤(在输出时通过解码器完成),LoopFiltering是应用于每帧的编码过程,这有助于避免块效应,特别是低比特率的码流,但会降低编/解码速率。
Variable Block Sizes/Macroblock Partitions:(可变区块尺寸/ 微块分割)
相对于MPEG-4 ASP(只支持Inter4V/4MV ,块大小可在16x16和8x8之间变化)。AVC/H.264提供了把宏块划分为4x4像素(包括8x4步骤)的运动搜索进度。块大小事自适应/可变的,一个好的编码器可以自动的决定采用哪个特定的宏块。
Multiple Reference Frames:(多重参照帧)
相对于MPEG-4 ASP(只允许使用前一帧做参考),AVC/H.264提供了从可以在多帧中来进行内部运动搜索。这意味着编解码器可以决定是否像ASP一样参考前一帧数据,还是选择参考更前面的视频帧。由于这个原因,(比如P帧可以参考I帧之前的视频帧),产生了一种新的帧类型:IDR帧。该帧是I帧,在I帧之前,不允许后面的帧进行参考。允许多参考帧,会降低编/解码速率,并且分割文件时只能选择在IDR帧位置。
Weighted Prediction:(权重预测)
加权预测可以加权应用到参考帧(比如可以扩大(增强亮度)之前的图片),这有助于画面淡入淡出。
Rate Distortion Optimisation (RDO):(评价变化优化)
RDO允许编码器在不同选择中做出最有效编码的决定。(比如帧间/内决定,运动搜索….)。RDO不是AVC/H.264规格中定义的工具,但它是一个新的决策方法,它第一次由H.264软件引入。其它编解码器也可以使用RDO,向Xvid的VHD模式已经开启了RDO。
===========================具体技术细节,不感兴趣可忽略=========================
AVC profile 的设置主要是针对兼容性的,一些特定的硬件播放器需要指定的 profile 编码才能被识别,具体的例子有PSP,iPOD 视频等,他们都有自己指定的 profile。PSP 是main profile/level 3,其他可能会有兼容性问题,这点切记!!
要是这些 profile 已经把你搞糊涂了的话,AVC Level 就更多了。level 有十来个,每个profile 都对应这些level。因此可以有更 细致的分类。 要是只是准备在自己 PC 上播放的话,可以不去管这些实际的 profile 和 level,因为 pc 的好 处就是通杀,无所谓。
Profiles和Levels
为了适应不同应用的需要,MPEG-2引入了配置(profiles)和等级(levels)的概念,每种配置定义一套新的算法,而每一个等级指定一套参数范围(如图像大小、帧速率和位速率)。
MPEG-2的配置
配置(profile) | 特征 |
简单(Simple) | 4:2:0取样,仅用I、P帧,支持随机存取,不支持可伸缩性 |
基本(Main) | 以上参数,加上支持B帧 |
信噪比可变 | 以上参数,加上信噪比可变性 |
空间分辨率可变 | 以上参数,加上空间分辨率可变性 |
高档(High) | 以上参数,4:2:2采样方式 |
MPEG-2的等级
等级(level) | 特征 |
低级(Low) | 352×288,30帧/s,1.2Mb/s |
基本级(Main) | 720×576,30帧/s,4~15Mb/s |
高级(High)1440 | 1440×1152,60帧/s,60Mb/s |
高级(High) | 1920×1152,60帧/s,80Mb/s |
MPEG-2的配置与等级的组合
参考资料
1、
http://wenku.baidu.com/view/c6059d20dd36a32d737581be.html
2、
http://forum.doom9.org/showthread.php?t=96059
3、Levels for MPEG-4 Visual Profiles
http://www.m4if.org/resources/profiles/index.php
4、MPEG-2 Profiles and Levels
http://wenku.baidu.com/view/d1379552f01dc281e53af0f7.html
转载自原文链接, 如需删除请联系管理员。
原文链接:MPEG编码基础知识(一),转载请注明来源!