H264 - H.264简介
H.264 是MPEG-4 标准所定义的最新格式,同时也是技术含量最高、代表最新技术水平的视频编码格式之一,有的也称(AVC)。
AVC/H.264 视频编码由ISO 的MPEG 和ITU 的VCEG 两个组织于2003 年最终定稿。AVC/H.264 标准本身则是由包括来自MPEG 和VCEG 专家的Joint Video Team(JVT)开发。
从MPEG 的角度来说,这个标准叫做MPEG-4 Part10(ISO 14496-10),从ITU 的角度来说,这个标准叫做H.264(ITU 文档编号)。作为这个标准的“官方名称”,Advanced Video Coding(AVC)是MPEG 由Advanced Audio Coding(AAC)这个音频格式的视频副本确定的。
作为目前最广泛使用的高清晰度视频格式,H.264主要应用于HDDVD(已被淘汰)和蓝光DVD(blue-ray Disc)中。
H264 - H.264的功能构成
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 格式;
或许只有在将来才能知道哪些Profile 或哪些功能会成为DVDRIP 的主流,但是猜想会是Main 或是High Profile,包含下面的一些功能:
AVC/H.264 为熵编码(entropy coding)规定了两个比MPEG-4 ASP 更加进步的功能,Context-Adaptive Variable Length Coding(CAVLC, 前后自适应可变长度编码) 和Context-Adaptive Binary Arithmetic Coding (CABAC,前后自适应二进制算术编码)。CABAC 是AVC/H.264 的默认模式,与CAVLC(也叫UVLC)相比,CABAC 是一个更加强有力的压缩方式,可以将码率在降低10-15%(特别是在高码率情况下)。CABAC (CAVLC 也同样)是一个不会损伤画面的无损编码,但是会降低编码和解码的速度。
与预处理(比如通过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 可以选择不止一个帧进行内部动作搜寻,也就是说,编码器可以自行选择前一帧(像MPEG-4 ASP 那样),或是加上更前面的帧进行参照。正是由于这样(比如P 帧可能会参照最后一个I 帧之前的帧),一种新类型的帧随之产生——IDR 帧,我们可以将其理解为不允许后面的帧向前面进行参照的I 帧。如果使用多重参照帧的话,编码和解码的速度都会减慢,而且编码、解码、剪切只能从IDR 帧开始。
译注:
按照原文恐怕不太容易理解,这里译者以自己的理解来讲解一下IDR 帧。举个例子,在一段视频中, 存在以下帧:I P B P B P B B P I P B…
如果这段视频应用了多重参照帧,那么蓝色的P 帧在参照他前面的I 帧(红色)的同时,还可能会参照I 帧之前的P 帧(绿色),由于I帧前后的场景可能会有很大的反差甚至根本不同,所以此时P 帧参考I 帧之前的帧不但会没有意义,反而会造成很多问题。
所以一种新型的帧被引入,那就是IDR 帧。如果这段视频应用了多重参考帧的同时采用了IDR 帧,那么帧的顺序就会变成这样:I P B P B P B B P IDR P B… 由于IDR 帧禁止后面的帧向自己前面的帧参照,所以这回那个蓝色的P 帧就不会参照绿色的P 帧了。
Weighted Prediction (权重预测)
使用权重预测,就是在参考帧上施加权重。这么说恐怕不太明白,但是向下看就会明白多了。在渐变场景(比如画面逐渐变黑),后面的帧除了比前面的帧要暗一些,其他地方都很相似,那么权重预测就在这些地方发挥作用了。需要注意的是,权重预测对于交叉渐变(比如从一个场景渐变到另一个场景)不会有作用。
Rate Distortion Optimisation (RDO ,评价变化优化)
RDO 使编码器遇到多种不同的选择的时候,选择最有效的编码方式。RDO 并不是由AVC/H.264 专家制定的功能,但它是最先由H.264 参考软件所用到的一种决定方法。其他的编码器也可以采用RDO,比如XviD 的VHQ 模式已经运用了RDO。
H264 - H264的优势
一、H.264与其他标准的比较H.264 Level Limits
1.1 在画质上
H.264概述随着市场的需求,在尽可能低的存储情况下获得好的图像质量和低带宽图像快速传输已成为视频压缩的两大难题。为此IEO/IEC/和ITU-T两大国际标准化组织联手制定了新一代视频压缩标准H.264。
H.264和以前的标准一样,也是DPCM加变换编码的混合编码模式。但它采用“回归基本”的简洁设计,不用众多的选项,获得比MEPG-4好得多的压缩性能;H.264加强了对各种信道的适应能力,采用“网络友好”的结构和语法,有利于对误友和丢包的处理;H.264应用目标范围较宽,可以满足不同速率、不同解析度以及不同传输(存储)场合的需求。
1.3 在技术上
H.264标准中有多个闪光之处,如统一的VLC符号编码,高精度、多模式的位移估计,基于4块的整数变换、分层的编码语法等。这些措施使得H.264得算法具有很高的编码效率,在相同的重建图像质量下,能够比H.263节约50%左右的码率。H.264的码流结构网络适应性强,增加了差错恢复能力,能够很好地适应IP和无线网络的应用。
1.4 在传输上
H.264能以较低的数据速率传送基于联网协议(IP)的 视频流,在视频质量、压缩效率和数据包恢复丢失等方面,超越了现有的MPEG-2、MPEG-4和H.26x视频通讯标准,更适合窄带传输。
1.5 在算法上
MPEG-1标准视频编码部分的基本方法与H.261/ H.263相似,也采用运动补偿的 帧间预测、二维DCT、VLC游程编码等措施。此外还引入了帧内帧(I)、预测帧(P)、双向预测帧(B)和直流帧(D)等概念,进一步提高了编码效率。在MPEG-1的基础上, MPEG-2标准在提高图像分辨率、兼容数字电视等方面做了一些改进,例如它的运动适量的精度为半像素;在编码运算中(如运动估计和DCT)区分“帧”和“场”;引入了编码的可分级性技术,如空间可分级性、时间可分级性和信噪比可分级性等。近年推出的 MPEG-4标准引入了基于视听对象(AVO:Audio-Visual Object)的编码,大大提高了视频通信的交互能力和编码效率。MPEG-4中还采用了一些新的技术,如形状编码、自适应DCT、任意开头视频对象编码等。但是MPEG-4的基本视频编码器还属于和3相似的一类混合编码器。
1.6 总体上讲
MPEG毓标准从针对存储媒体的应用发展到适应 传输媒体的应用,其核心视频编码的基本框架是和H.261一致的,其中引人注目的MPEG-4的 “基于对象的编码”部分由于尚有技术障碍,目前还难以普遍应用。因此,在此基础上发展起来的新的视频编码建议H.264克服了前者的弱点,在混合编码的框架下引入了新的编码方式,提高了编码效率,在低码流下可达到优质图像质量。
H264 - H.264的不足
当前AVC/H.264 的问题
如果你对现有的AVC 工具嗤之以鼻,你肯定发现了AVC 的一些问题:
-兼容性:目前不同的AVC 工具支持不同的容器(Container):
.mp4:mp4 是MPEG-4 标准(ISO 14496-15)指定的AVC 容器。目前支持它的编码器有Nero、Sorenson、Envivio 和Moonlight。
.mpg:mpg 是MPEG-2 标准(ISO 13818-1,AMD3)指定的AVC 容器。目前支持它的编码器有:Mainconcept和Moonlight。(蓝光BD-ROM 也会使用这种容器)
.avi:使用AVI 作为容器是不标准的,并且会造成不兼容的问题。使用AVI 可能妨碍AVC 的一些功能的发挥,也可能会损伤回放的质量,或者降低解码速度。目前支持avi 的编码器有VSS、x264(mencoder 和x264 的vfw 都支持)、mpegable。
.264/.h264:通常是参考编码器输出的作为例子的源图像。(mencoder 中的x264 也可以输出.264,mp4creator 可以从.mp4 种DEMUX 出来)。
H264 - H.264的技术特点
2.1 分层设计
视频编码层具有高效的视频内容表示功能:
网络提取层将网络中所需要的数据进行打包和传送;
2.2 高精度、多模式运动设计
支持1/4或1/8像素精度的运动矢量;
多模式的灵活和细致的划分,大提高了运动估计的精确程度;
多帧参考技术;
2.3 帧内预测功能
在空间域进行预测编码算法,以便取得更有效的压缩:
2.4 4×4块的整数变换
由于用二变换块的尺寸缩小,运动物体的划分更精确,这样,不但变换计算量比较小,而且在运动物体边缘处的衔接误疾差也大为减小:
为了提高码率控制的能力,量化步长的变化的幅度控制在125%左右,而不是以不变的增幅变化。为了强调彩色的逼真性,对色度系数采用了较小量化长;
2.5 统一的VLC
为快速再同步而经过优化的,可以有效防止误码。
H264 - H.264的硬件应用
MPEG-4 AVC/H.264的硬件应用
- HD-DVD/蓝光(Blu-ray)
dvd论坛(DVD Forum)和蓝光光盘协会(Blu-ray Disc Association)正在讨论能支持高清晰(High Definition)内容(存储容量完全超过当前的DVD)下一代DVD格式的继承人选:HD-DVD和BD-ROM
据报道HD-DVD会强制采用MPEG-4 AVC/H.264,而蓝光支持老早被MPEG-4 AVC/H.264 High Profile纳入。
因此AVC/H.264极有可能成为下一代视频格式,会被广泛地使用和支持,就象今天MPEG-2(用于DVD)的情形一样!
H264 - H.264的软件应用
AnyChat音视频基于H.264视频编码标准、AAC音频编码标准与P2P技术,封装了底层的硬件操作(音视频采集、播放)、封装了流媒体处理(编解码、网络传输)等技术,为上层应用提供简单的API控制接口,可以在极短的开发周期,以及极少的人力资源投入下现有平台增加音视频即时通讯、多方会议的功能。
H264 - H.264在监控的应用
3.1 toya SDVR 7IV 系统简介
TOYA SDVR 7IV 是采用目前为止最为先进H.264视频压缩算法的专业数字监控产品,具有强大的视频/音频压缩引擎,与MPEG-4压缩方式的硬盘录像机相比,压缩比可提高近30%,大大提高了存储和网络传输带宽,同理采用新的算法极大地抑制了由于摄像机噪声导致的图像失真,背景流动现象,便图像质量更加清晰。H.264产品的推出无疑又使我国的数字监控技术上了一个新的台阶。
系统采用最先进的H264视频压缩技术和G。729的音频压缩技术,实现超大无损压缩。具备本地实时监视、音视频同步压缩存储、组合报警、有线或无线网络传输、管理权限设置等多种功能,单个本地系统可完成显示16路监控画面、每路可单独放大和切换,查询录象记录及进行回放。每个本地系统均可通过不同的网络方式组成有线或无线数字监控系统。
3.2 TOYA SDVR 7IV 系统主要特点
采用时间最先进的H.264视频编码技术,具有高清晰度的画质;
在压缩处理过程中使用多种专用技术,保证以最低码流达到最佳画质,采用帧内压缩,绝无马赛克出现;
提供多种图像处理方法,加强噪音信号的过滤,画面更平滑。
可同时支持H.264、MPEG-4压缩格式;
实时压缩、实时预览、实时回放;
支持I\B\P帧多种组合/量化模式,图像压缩比更大;
在压缩过程中,可动态抽帧,可随时恢复,进一步减少存储空间;
预览、压缩不占用CPU时间,互不干扰;
可动态精确设置多种视音频压缩参数,达到最佳视听效果;
码流可调,占用硬盘空间最少可达40兆每小时;
工艺精良,结构稳定;低功耗,发热少,系统可靠性、稳定性高;
3.3 主要技术规格
压缩画面以及分辨,支持CIF/QCIF,图像分辨率352X288,图像压缩
压缩格式:支持H.264、MPEG-4压缩格式;
压缩帧率:1-25帧可调
压缩码率:64K~2Mbit/秒,支持CBR\VBR\Hybrid
三种码率控制方式:变码流、动码流、混合码流
网络传输
支持PSTN/DDN/LAN/WAN等网络远程传输与控制
每个服务器支持32路TCP/UDP传输,组播无限制
3.4 系统功能
多画面分割:单路、四路、九路、十六路、全屏显示等多种画面分割;
采用录象方式;常规录象,动态录象,视频移动报警录象,定时录象;
字符/时间叠加功能:可以在每一路视频上叠加地点信息,便于查询;
多用户管理:可设置多级管理员权限;
工作日志:详细记录系统工作状态,方便用户管理;
报警:具有报警输入/输出功能,单独设置报警区域和灵敏度
图像亮度/对比度/色度/饱和度随时可调
支持G.729标准音频压缩,线性音频输入,音质好,占硬盘空间少
回放检索:根据时间、日期、摄像机编号分别回放检索
3.5 TOYA SDVR 7IV系统应用
技术的成熟和不断人性化的设计,使得本系统得以全方位进入金融、保险等特殊领域,而且在全能楼宇、文化教育、医学研究、交通指挥管制、在建工程管理、恶劣工况管理、海关及公、检、法商业贸易等诸多领域得到了广泛的应用。
关于DVD和H264视频格式
问题1:在电脑上,看到低码率的H264格式影片在清晰度上丝毫不比DVD差,但容量却只有DVD的2/5左右,这是为什么?既然如此,何不用H264取代DVD?这样一来,一张D5的碟岂不是能装更多清晰度高的电影?
问题2:按说DVD的清晰度应该比H264高才对(毕竟很多H264是从DVD转换来的),但我在电脑上直接看DVD时,发现其分辨率仅为720X480,而一般的H264的分辨率都在960X540(高于DVD),难道网上那些960X540的H264格式影片压制源都是来自蓝光DVD格式或HDV但据说蓝光和HD-DVD由于采用了新技术,可以以更高码率(高于普通DVD的最大9点几Mbps/s)来重放数字视频,其实这些都不是问题的关键,我想问的是,为何那么高码率的DVD在电脑显示器上看(没有把H264格式的影片接在大屏幕彩电上比较),清晰度就是不如码率比它低那么多的H264(视频码率才1411Kbps,不过1.4Mbps而已)和1080P的高清(下了一个,视频码率和普通DVD相当,5Mbps左右)?难道DVD的MPEG-2压缩技术真落伍了,导致用很大的数据量来压制,反而效果上还比不上数据量比它小很多的H264?
问题1:低码率的H264对硬件要求高,一般的电脑配置根本看不了,看DVD则是P3就够了
问题2:真正的H264分辨率是720P、1080I、1080P三种,没有960X540的,转压后的H264质量和原版的没法比,原版的H264是胶片转压的,不是蓝光或DVD转的,网上的哪些950X540的格式部分来自HD和蓝光,部分则是来是TV高清转压的
H264 - H.264的各Level限制
H.264 Level Limits
Level number | Max macroblock processing rate MaxMBPS (MB/s) | Max frame size MaxFS (MBs) | Max decoded picture buffer size MaxDPB(1024 bytes) | Max video bit rate MaxBR (1000 bits/s, 1200 bits/s, cpbBrVclFactor bits/s or cpbBrNalFactor bits/s) |
Max CPB size MaxCPB (1000 bits, 1200 bits, cpbBrVclFactor bits or cpbBrNalFactor bits) * |
Vertical MV component range MaxVmvR (luma frame samples) |
Min compression ratio MinCR | Max number of motion vectors per two consecutive MBs MaxMvsPer2Mb |
1 | 1 485 | 99 | 148.5 | 64 | 175 | [-64,+63.75] | 2 | - |
1.1 | 3 000 | 396 | 337.5 | 192 | 500 | [-128,+127.75] | 2 | - |
1.2 | 6 000 | 396 | 891.0 | 384 | 1 000 | [-128,+127.75] | 2 | - |
1.3 | 11 880 | 396 | 891.0 | 768 | 2 000 | [-128,+127.75] | 2 | - |
2 | 11 880 | 396 | 891.0 | 2 000 | 2 000 | [-128,+127.75] | 2 | - |
2.1 | 19 800 | 792 | 1 782.0 | 4 000 | 4 000 | [-256,+255.75] | 2 | - |
2.2 | 20 250 | 1 620 | 3 037.5 | 4 000 | 4 000 | [-256,+255.75] | 2 | - |
3 | 40 500 | 1 620 | 3 037.5 | 10 000 | 10 000 | [-256,+255.75] | 2 | 32 |
3.1 | 108 000 | 3 600 | 6 750.0 | 14 000 | 14 000 | [-512,+511.75] | 4 | 16 |
3.2 | 216 000 | 5 120 | 7 680.0 | 20 000 | 20 000 | [-512,+511.75] | 4 | 16 |
4 | 245 760 | 8 192 | 12 288.0 | 20 000 | 25 000 | [-512,+511.75] | 4 | 16 |
4.1 | 245 760 | 8 192 | 12 288.0 | 50 000 | 62 500 | [-512,+511.75] | 2 | 16 |
4.2 | 491 520 | 8 192 | 12 288.0 | 50 000 | 62 500 | [-512,+511.75] | 2 | 16 |
5 | 589 824 | 22 080 | 41 310.0 | 135 000 | 135 000 | [-512,+511.75] | 2 | 16 |
5.1 | 983 040 | 36 864 | 69 120.0 | 240 000 | 240 000 | [-512,+511.75] | 2 | 16 |
When the profile is baseline/extended/main profile, the unit is 1000 bits for VCL(Video Coding Layer) and 1200 bits for NAL(Network Abstraction Layer).