从菜鸟出发!带你认识主流高清视频规格
现在主流视频的主要有MPEG2,MPEG4,H.264(MPEG4 AVC),VC-1(AVC-1)/WMV9HD等。不同的格式的压缩比以及表现都有各有差别,下面会有专门的介绍,如今网上常见的就仅有三个,MPEG2,H.264,VC-1。音频编码格式主要是AC3、DTS和EAC3,最近AAC有异军突起的意思。
由于现在不少片源都是源自于网上下载,这些片源一般都是重新封装的过的,其目的是为了更好的存储以及传输,再加上许多厂商极立推广自己的封装格式,现在网上有非常多的封装格式,如AVI, TS,MKV,这些封装格式就是容器,而视频编码和音频编码就相当是于是菜和饭,如何装下这些饭菜,用的碗和锅也有一定要求。至于封装方面的问题,在这里就不深究了,我们下面来具体谈谈H.264和VC-1的区别。
H.264
H.264又称为MPEG4-AVC,MPEG系列的标准归属于ISO/IEC,但另一方面以制订国际通讯标准为主的机构:ITU-T,在完成H.263(针对视频会议之用的串流视频标准)后展开了更先进的H.264制订,且新制订是与ISO/IEC机构连手合作,由两机构共同成立一个名为JVT(Joint Video Team)的联合工作小组,以MPEG-4技术为基础进行更适于视频会议(Video Conference)运用的衍生发展,也因为是联合制订,因此在ITU-T方面称为H.264,在ISO/IEC的MPEG方面就称为MPEG-4 Part 10(第10部分,也叫ISO/IEC 14496-10),MPEG-4 Part 10的另一个代称是MPEG-4 AVC(Advanced Video Coding,先进视频编码),多个名称其实是一个意思,即H.264=MPEG-4 Part 10=ISO/IEC 14496-10=MPEG-4 AVC。
那么,H.264到底与MPEG-4有何差别呢?更准确地说MPEG-4 Part 10与MPEG-4 Part 2有何差别?为何需要再订制出MPEG-4 Part 10呢?直接沿用MPEG-4 Part 2难道不行?虽然MPEG-4已针对Internet传送而设计,提供比MPEG-2更高的视频压缩效率,更灵活与弹性变化的播放取样率,但就视频会议而言总希望有更进一步的压缩,所以才需要出现了H.264。
到底H.264好在哪?先让我们将MPEG-2、MPEG-4(MPEG-4 Part 2)、H.264(MPEG-4 AVC、MPEG-4 Part 10)三者进行分辨率表现与所用带宽的比较,无论MPEG-2、MPEG-4、H.264,三者都能达1920×1080i(非交错)的高清晰度(High Definition,HD)、24fps(每秒更新24张画面)的影像画质,但传输带宽上MPEG-2需要12~20Mbps,相对的H.264只要7~8Mbps,而MPEG-4则介于两者间,更直接地说,若把MPEG-2的带宽用作基准的100%,MPEG-4要达相同效果只需要60%带宽,H.264更是低至40%,约为原MPEG-2的1/2~1/3。
值得一提的是H.264标准采用的熵解码有两种:一种是基于内容的自适应变长编码(CAVLC)与统一的变长编码 (CAVLC)结合;另一种是基于内容的自适应二进制算术编码(CABAC)。CAVLC与CABAC根据相临块的情况进行当前块的编码,以达到更好的编码效率。CABAC比CAVLC压缩效率高,在相当画质的情况下可以节省 20%左右的带宽,但要复杂一些。
VC-1
VC-1(VC指Video Codec)的诞生则源于Windows Media,它是提供网上音乐与视频预订服务与视频流的主要格式。微软公司于 2002 年推出了 Windows Media Video 9 系列编解码器,实现了视频压缩效率的显著提高。WMV9 另外还作为 VC-1 在 SMPTE 中实现了标准化。当然了,VC-1纯粹是一种视频压缩算法,并没有WMV中数字版权管理、元数据、播放列表和用户接口这些元素。
与 H.264 类似,它包含许多高级编码工具,不过种类有所不同。除了支持半象素双线性插值之外,WMV9 的 ME 还允许 1/4 象素双立方插值(采用 4 抽头近似双立方滤波器)。另外它还包含与 H.264 类似的环内解块滤波器,不过滤波器和决策细节不同
环内解块滤波器(deblockking fliter)开与否展示,上图为关,下图为开。可明显看出上图色块非常严重,而下图则过渡得十分平滑。经过滤波处理,减少了块效应,而图像的质量基本不受影响,因此主观质量大大改善。如果不滤波,同样的主观质量,需要多出5%~10%的码率。上下图说明了块滤波器的效果,由此可见H.264/VC-1在视频压缩方面有独到的技术(MPEG4 PART2采用后期解块滤波器)
各编码详细规格对比
MPEG2 | MPEG4 | H.264 | VC-1 | |
画面质量 | 一般 | 较好 | 最好 | 最好 |
压缩比(以MPEG2为1) | 100% | 50~60% | 25~40% | 30~40% |
对硬件要求 | 最低 | 较低 |
CABAC最高 CALVC较高 |
较高 |
授权成本 | 最低 | 较高 | 较低 | 较低(以后有涨价的可能性) |
运营商支持力度 | 较高 | 低 | 高 | 中等 |
PC硬件加速 | 全有 | 少数 | 多数 | 中等 |
网络片源 | 极少数 | 多数 | X264为多数/H.264为中等 | 多数 |
解码器,分离器以及DXVA的概念
好,了解完高清视频的类型和封装形式以后我们再看看建立在视频文件之上的播放这些类型文件所需的解码器,分离器以及DXVA等概念,让我们更好的了解系统处理高清视频的整个过程这是非常必要的一步。
解码器的功能就是对视频或者音频进行解压缩。我们知道不论是原始的视频或者是原始的音频,数据都是十分惊人和庞大的,所以我们要用编码器对其进行压缩,这样才有利于传输和存储。在播放时我们就要需要还原成画面或者声音,这就需要解压,也就是解码。其中视频解码器比较复杂:
视频压缩技术就像我们之前所说有很多种,每一种里又有不少官方的,第三方的解码器,各种解码器功能,画面,速度都有差异,不过一般分为两种解码器:硬件解码器和软件解码器。
硬件解码器就是利用解码器所带的驱动接口和硬件本身连接上,利用硬件所带的功能对视频进行解码,这样可以降低对CPU的负荷,从而实现流畅播放以及提升CPU多任务的能力。而软件解码器就是除了硬件解码器之外的所有解码器,其最大特征就是利用CPU通用处理的功能,对其进行软件解码。软件解码虽然耗费CPU,但是可以修改,升级,在CPU资源充足的情况下是最好的选择。
分离器的功能就是把封装在一起的视频以及音频还原出来。之前我们谈过有不少的封装,每一种封装必须对应一种分离器,才能正确的把视频和音频分离出来以供解码器解码。分离器也有很多种,一般情况下非标准的封装格式在正规的播放器里都没有相应的分离器,比如MKV。而分离器比较出名的有月光分离器,haali等。
DXVA(也称DirectX VA)全称就是DirectX Video Acceleration(硬件视频加速接口)。DXVA是一个由微软和图形芯片厂商联合定义的一个硬件接口规范。如果一种显卡芯片在硬件上支持DXVA规范,并不代表它就实现了DXVA里面定义的所有功能。不过有一点可以肯定的是:对于DXVA定义的每一项功能,符合DXVA规范的显示芯片驱动程序一定会告诉系统,这项功能在它的硬件里实现了还是没有实现——这是DXVA规范强制性要求的。这样做的好处是应用程序不需要自己花费时间和精力去测试显卡有没有实现某项功能。同样的,如果一种解码器支持DXVA规范,也不代表它就能利用DXVA规范里面所有的功能组合,它可以选择自己有能力支持的,或者想要支持的那些功能的组合,而其他功能组合也许就放弃了。
此外,如果某种显示芯片虽然通过驱动表示支持某种功能,但解码器认为该芯片对这个功能的支持是不稳定的,容易导致系统崩溃或错误,那么解码器也可以放弃使用该芯片的这种功能。
按照DXVA规范,硬件解码加速有3种级别
1、MC加速(运动补偿,也就前文提到Pixel Prediction)
2、IDCT加速(前文提到的Frequency Transform) + MC加速
3、VLD加速(前文提到的熵解码) + IDCT加速 + MC加速+(deblocking fliter环内解块滤波)
除了比较老的显卡(例如Geforce3)才支持MC加速之外,现在GF6/7,X1000系列第二级,而GF 8600/8500支持H.264第三级加速,以及HD2000系列支持VC-1/H.264第三级加速,当然,这也需要解码器支持才能被调用。当播放器或者解码器显示DXVA(也称DirectX VA)时也代表着硬件加速已经被开启。