音视频播放器关键技术探讨

来源:互联网 发布:第十域辅助软件 编辑:程序博客网 时间:2024/06/05 18:31

1. 常用播放器介绍
目前,市面上存在为数众多的各种各样媒体播放器,即使是被广泛使用的播放器也超过10种。这些播放器有公司的产品,也有个人爱好者出于自身兴趣推出的作品;有收费的,也有不少是免费的。目前市面上使用比较广泛的视频播放器包括:
• 暴风影音(StormPlayer)
• GOM Player
• KMPlayer
• VLC Media Player(开源)
• MPlayer(开源)
• KLC(K-Lite Codec Pack,带播放器MPC)(开源)
•影音风暴(MyMPC)
•超级兔子快乐影音(KLPlayer)
•风雷影音
• WMP(Windows Media Player)
• Real Player
• Quicktime Player
• WinDVD
• PowerDVD

从功能上来说,上述播放器都可以实现基本的播放功能,大体上的用户体验也类似,其中有超过一半的播放器自称为“万能播放器”,即自称可以支持所有的媒体文件。从实际试验结果来看,这些“万能播放器”也确实可以播放绝大多数目前见到的视频文件。因此,对于用户来说,选择上面哪种播放器更多的是从一些细节、特色功能或者个人喜好方面的考虑。下表列出了一些主流播放器在格式支持和特色功能或显著优缺点上的一些对比:

表 1视频格式(及容器文件)的支持对比

 

影音

GOM Playe

KMPlayer

VLC

MPlayer

KLC

影音

影音

WMP

MPEG系列

Y

Y

Y

Y

Y

Y

Y

Y

Y

RM/RMVB

Y

Y

Y

N

Y

Y

Y

Y

AVI

Y

Y

Y

声错

Y

Y

Y

Y

Y

ASF

Y

Y

Y

Y

Y

Y

Y

Y

Y

WMV

Y

Y

Y

Y

Y

Y

Y

Y

Y

MOV系列

Y

Y

Y

Y

N

SWF

Y

Y

Y

N

N

Y

Y

Y

N

3GP

Y

Y

Y

Y

Y

FLV

Y

Y

Y

Y

Y

Y

Y

Y


表 2特色功能及显著优缺点对比

 

特色功能

暴风影音

打开文件速度较快,最新版本增加文字广告,引起很多用户反感并抵制使用最新版

GOM Playe

界面清爽,安装文件小;有自动查找解码功能;支持BTe-muleP2P站点中接收到损坏的文件,因中断页传送完成的文件,索引损坏的AVI文件的播放;想截取的视频画面可以储存为图像 (JPG, BMP)文件,还可以通过连续截图取功能来实现把影片的场景以帧为单位,截取成连续性的场景;具有在视频文件中仅提取音频文件或是反复听取特定区间的功能

KMPlayer

功能丰富,支持插件化,开放SDK,支持自动无缝播放多集连续剧、自动跳过连续剧的片头片尾

VLC

交叉平台做得最好,即支持各种平台

MPlayer

支持格式很全,性能优异

影音风暴

是一款纯绿色软件,不会给用户安装时带来不必要插件的烦恼,提供了三种预设和一种自定义安装模式

快乐影音

mp3自动显歌词,自动播放DVD,自动添加连续剧,连续剧无缝播放

风雷影音

独创双播放内核架构,聚合MPlayerMPC核心优势;无插件,全免费,拒绝恶意视频,拦截视频广告;智能连续剧播放,跳过连续剧片头/片尾。

WMP

Windows自带


2. 播放器的主流架构
本章探讨的是目前Windows平台下多格式支持播放器的主流架构。DirectShow架构是目前Windows平台下最流行的媒体播放架构,另外,针对Real Media格式、MOV格式和SWF格式,也有相应封装动态链接库方式的架构。MPlayer是Linux平台下的一款优秀的多格式支持播放器,由于其优异的播放性能,所以被移植到Windows平台,成为Windows平台下的MPlayer播放架构。
2.1. DirectShow架构
DirectShow是DirectX家族中的成员之一,DirectX是微软提供的一套在Windows操作系统平台上开发图形、声音、输入、输出及多媒体数据处理的编程接口。DirectShow为多媒体数据的分离/合成、编码/解码及回放等一系列处理提供了统一的编程框架,DirectShow让应用程序开发人员从复杂的数据传输、硬件差异、同步性等工作中解脱出来,使得开发多媒体应用程序变得非常的简单。
DirectShow的系统框架如图一所示。DirectShow采用了一种叫Filter Graph的模型来管理整个数据流的处理过程,参与数据处理的各个功能模块叫做Filter,各个Filter在Filter Graph中按一定的顺序连接成一条“流水线”协同工作。

图 1 DirectShow系统框架
按照功能划分,Filter大致分为三类:Source Filter、Transform Filter、Rendering Filter。Source Filter主要负责获取数据,数据源可以是文件、网络数据流、采集设备等;Transform Filter主要负责数据的格式转换,如数据流的分离/合成、编码/解码等;Rendering Filter主要负责数据流的最终去向,将数据传送给显卡、声卡进行多媒体回放,或者输出到文件进行存储。
媒体播放是DirectShow架构平台中的一种应用,图2所示为一条典型的AVI文件回放的链路。其中,箭头方向表示数据的流向,对照图1可以发现,File Source(Async)属于Source Filters,它用于读取硬盘上的AVI文件数据。AVI Splitter和AVI Decompressor属于Transform Filters。其中AVI Splitter负责对音频和视频进行分离,AVI Decompressor负责视频的解码。Video Render和Default DirectSound Device属于Rendering Filters,其中,Video Render负责向视频窗口输出图像,Default DirectSound Device负责同步播放声音。

图 2 AVI文件播放链路示例

DirectShow架构是一套成熟的媒体播放架构,具备以下几个优点:
1. 开发便捷——由于DirectShow已经考虑了数据交换、同步,以及硬件差异等问题,使得上层开发变得简单。
2. 播放控制和编解码分离——不同的媒体文件需要不同的编解码模块,而播放控制的功能都是相同的。因此,DirectShow将播放控制和编解码分离,Filter Graph提供统一的播放控制接口,不同的Filter完成各种格式的编解码功能。
3. 灵活——Filter Graph可以将系统中的各种Filter像搭积木一样的进行组合,然后完成对任意媒体文件的播放。

然而,随着时间的推移,DirectShow技术在很多方面也暴露出缺陷,其中DirectShow媒体播放架构就存在以下几点缺陷:
1. Filter的管理混乱——随着多媒体技术的发展,系统中的Filter越来越多,而DirectShow仅依靠Merit值来规定Filter的使用优先级,而Merit值又是不同安装程序可以任意指定的,从而导致了混乱。
2. Filter版本干扰——GUID是Filter的唯一标识,系统中只能保留同一Filter的一个版本。因此,一个应用程序安装的新版的Filter会对其它使用该Filter的应用程序造成干扰。
3. 效率不高——为了支持媒体播放的灵活性,系统中过多的可选Filter会导致Filter Graph的连接速度变慢,Filter Graph中过多的Filter连接会增加内存和CPU资源的消耗。

因此,QQ播放器在采用DirectShow架构的同时,对该架构进行了改良:
1. 解决Filter管理混乱的问题——首先,利用扩展属性来定义Filter的优先级,该属性不会被其它应用程序所修改;同时,在原来Source, Transform, Rendering三种Filtering类型的基础上进行了细化,增加了Video Decoder, Audio Decoder, Video Effect, Audio Effect等类型,以便于更好的Filter管理。
2. 解决Filter版本干扰的问题——采用本地Filter替代系统Filter,本地Filter安装在播放器程序自有目录下,通过路径进行调用,从而解决了版本干扰的问题。
3. 解决连接速度慢的问题——采用渲染模型优化Filter连接速度。渲染模型通过细化的Filter类型,Media Type等信息,对待连接的Filter进行预测,可以大大减少尝试连接的次数。
2.2. 针对专有格式的架构
Windows Media Player采用的是DirectShow架构,而Real Player, QuickTime Player, Flash Player均采用了自有的架构。因此,目前多格式支持的播放器针对Real Media等专有格式的支持上,可以有更多的选择,就是调用Real Player, QuickTime Player或Flash Player安装后的动态链接库文件,在上层进行封装并模拟输出Filter Graph接口。对于需要调用到的动态链接库文件,Real Player和QuickTime Player可以用Real Alternative和QuickTime Player替代,Flash Player只需用到其中的ocx控件即可。
基于Real Player, QuickTime Player, Flash Player的三种针对专有格式的架构,我们分别称之为RM引擎、QuickTime引擎和Shockwave引擎。三种引擎分别用于播放Real Media格式、MOV格式和SWF格式。其中Real Media格式和MOV格式,有相应的DirectShow架构可以支持,但SWF格式没有相应DirectShow架构支持。
这种基于专有格式的媒体播放架构,在格式支持健壮性和纠错能力上,比DirectShow架构优越,比如RM引擎对于未下载完成的RM文件,可以进行较好地纠错播放。但是,这种专有格式架构在功能支持上存在缺陷,因为其Filter Graph是模拟出来的,下层并不具备各类功能Filter,所以无法插入音视频后处理等自定义功能的Filter,另外它们在Filter Graph的接口支持上也不够完备,只支持基本的接口功能。
2.3. MPlayer架构
MPlayer是Linux平台下的一款优秀的媒体播放器,它的特点是格式支持齐全、系统资源占用极少。由于它的优异性能,MPlayer也被移植到Windows平台下。MPlayer采用ffmpeg中的libavformat解析音视频数据流,采用libavcodec对各类音视频格式进行解码,由于没有Filter机制,不存在Filter连接带来的额外Buffer拷贝、状态传递等开销,所以MPlayer的播放性能很好、系统资源占用极少。然而,MPlayer架构在灵活性上存在缺陷,由于没有类似Filter的机制,使得新增格式支持比较复杂,需要增加较多的代码逻辑。

3. 媒体文件与编码格式
通常情况下,文件格式是与文件扩展名对应的,如扩展名“.exe”表示exe文件,扩展名“.zip”表示zip压缩文件。然而,对于媒体文件格式,仅用文件扩展名是无法准确表述的。比如,扩展名为“.avi”的媒体文件,会有AVI文件、H.264文件、Divx文件、Xvid文件等不同的叫法,其中原因在于媒体文件格式的内涵是比较丰富的。媒体文件的格式通常包含三部分的格式,分别是文件容器格式、视频格式、音频格式。比如,刚才提及的扩展名为“.avi”的媒体文件,被称为AVI文件是因为其容器格式是AVI的,而被称为H.264文件、Divx文件或Xvid文件,是因为媒体文件采用了H.264、Divx或Xvid视频压缩格式。
3.1. 文件容器格式
文件容器格式的作用是规定媒体文件中视频数据和音频数据的存放规则,文件容器格式通常与媒体文件的扩展名相对应,常见的文件容器格式有:AVI、ASF、 RealMedia、MOV、MP3、MKV等。

• AVI容器格式
AVI的英文全称为Audio Video Interleaved,即音频视频交错格式,是将语音和影像同步组合在一起的文件格式。AVI于1992年被Microsoft公司推出,随Windows3.1一起被人们所认识和熟知。AVI文件格式多用于音视频捕捉、编辑、回放等应用程序中。通常情况下,一个AVI文件可以包含多个不同类型的媒体流(典型的情况下有一个音频流和一个视频流),不过含有单一音频流或单一视频流的AVI文件也是合法的。AVI可以算是Windows操作系统上最基本的、也是最常用的一种媒体文件格式。AVI文件属于一种RIFF文件格式,与此同类的还有常见的WAV文件。RIFF全称为资源互换文件格式(Resources Interchange File Format),RIFF文件是windows环境下大部分多媒体文件遵循的一种文件结构。

• ASF容器格式
ASF全称为高级流格式 (Advanced Streaming Format),ASF是Microsoft公司设计的一种适合于网络实时传输的流式媒体格式,通常用于封装Windows Media媒体数据。Microsoft将ASF 定义为同步媒体的统一容器文件格式。ASF是一种数据格式,音频、视频、图像以及控制命令脚本等多媒体信息通过这种格式,以网络数据包的形式传输,实现流式多媒体内容发布。

• RealMedia容器格式
RealMedia是RealNetworks公司设计的一系列流式媒体格式的集合,它包括RealAudio、RealVideo和RealFlash三类文件,其中RealAudio用来传输接近CD音质的音频数据,RealVideo用来传输不间断的视频数据,RealFlash则是RealNetworks公司与Macromedia公司联合推出的一种高压缩比的动画格式。RealMedia文件格式的引入,使得RealSystem可以通过各种网络传送高质量的多媒体内容。

• MOV容器格式
MOV文件容器格式是Apple公司的QuickTime多媒体平台的一个重要环节。QuickTime是Apple公司开发的一套完整的多媒体平台架构,可以用来进行多种媒体的创建,生产,和分发。MOV文件容器格式是一种极具弹性的媒体储存格式,具备很好的跨平台能力,已经被越来越广泛地使用。

• MP3容器格式
MP3是一个耳熟能详的名词,MP3可以是文件容器格式,也可以是音频编码格式。作为文件容器格式,MP3是一种非常简单的容器格式。MP3文件由帧(frame)构成的,帧是MP3 文件最小的组成单位。在帧结构的基础上,MP3文件头部或尾部可以可选地包含ID3音乐描述信息。

• MKV容器格式
MKV是一种全称为Matroska的新型多媒体文件容器格式,MKV的特点是能容纳多种不同类型编码的视频、音频及字幕流,其音视频编码的自由度是非常大的。由于具备先进的、开放的封装格式,MKV已经越来越广泛地被使用,甚至有人把它看成是AVI的替代者。
3.2. 视频压缩格式
视频格式规定了视频数据的压缩标准,常见的视频格式有:H.26x系列(h.261, h.263, h.264), MPEG系列(MPEG-1, MPEG-2, MPEG-4),WMV, Real video, On2 VP系列等。

• H.26x系列和MPEG系列
H.26x系列和MPEG系列是国际上两大视频编码标准阵营,H.26x系列是国际电信联盟ITU-T制定的,MPEG系列是ISO/IEC的运动图像专家组制定的,它们的发展历程如图三所示。H.26x系列标准侧重于视频会议、可视电话等应用,MPEG系列标准侧重于存储媒体的压缩编码。下面按时间顺序对两个系列的编码标准作简单的介绍:
H.261:H.261是最早推出的视频压缩编码标准,主要应用于低码率的视频会议中,其支持的图象分辨率只有QCIF和CIF两种,输出码率规定为p×64kbps(p=1,2,3...30)。
MPEG-1:1988年,ISO/IEC信息技术联合委员会成立了活动图象专家组(MPEG, Moving Picture Expert Group),并于1991年公布了MPEG-1标准,码率为1.5Mbps。MPEG-1是一个成功的标准,它的主要应用是家用VCD的视频压缩。
MPEG-2:1990年,ITU-T和MPEG开始共同研制MPEG-2标准,也称H.262标准。MPEG-2是迄今为止最成功的一个视频压缩编码标准,被广泛应用于数字视频广播(DVB)和家用DVD的视频压缩。MPEG-2的码率从4Mbps、15Mbps…直至100Mbps,分别用于不同档次(profile)和不同级别(level)的视频压缩中。
H.263:H.263的目标是用于超低码率的应用中,它是H.261基础上的扩展,在编码的各个核心技术上都有较H.261有了很大的改进,包括半象素精度运动估计、非限制的运动矢量模式(UMV)、基于句法的算术编码以及PB帧模式等等。而H.263+,H.263++都是之后的再次扩展版本,增加了很多可选项,以使标准的适用面更广泛。
MPEG-4:1999年,MPEG-4推出,这是一个很受人期待的标准,因为它采用了基于对象的编码思想,被称为第二代视频压缩编码标准。但由于MPEG4中的核心技术――视频分割技术,迄今为止仍不够成熟,所以,目前市场上虽然出现了很多宣称基于MPEG-4标准的产品,但并没有体现MPEG4真正的优势――基于对象的编码方式。网上流行的Divx和Xvid是基于MPEG-4实现的编解码器,它们都是遵从MPEG-4编码标准的,因此也是属于MPEG-4标准。
H.264:2003年3月,H.264推出,这是ITU-T和MPEG组织继MPEG-2后的又一合作成果。H.264还是基于第一代的编码技术――基于块的编码方式,但它采用了很多先进的技术,如多参考帧、1/4象素运动补偿、整数变换等等,从而显著提高了视频压缩效率。同时,H.264标准还具有良好的网络亲和性,加强了对IP网、移动网的误码和丢包的处理。

图 3国际视频编码标准发展历程

• WMV压缩标准
WMV全称为Windows Media Video,是Microsoft制定的视频压缩标准。WMV包括WMV7, WMV8, WMV9等版本,版本越高,其压缩性能越好,其中WMV9标准因为被美国电影与电视工程师协会采用,又被命名为VC-1标准。另外,WMV还包括针对屏幕录制视频的WM Screen Codec版本。

• Real Video压缩标准
Real Video压缩标准是RealNetworks公司制定的视频压缩标准,包括RV10, RV20, RV30及RV40等版本。Real Video标准的特点是在低码率情况下,压缩效率很高,因此被广泛应用于图像质量要求不是很高、但对码率限制较大的场合。目前,Real Video标准是互联网上使用最广泛的视频编码标准之一。

• On2 VP系列压缩标准
VP系列压缩标准是On2公司制定的视频压缩标准,比较流行的版本是VP6和VP7。VP6是Macromedia的Flash8所采用视频压缩格式,最近几年视频分享网站的盛行带动了Flash Video解决方案的流行,从而也带动了VP6标准的流行。而VP7是新的视频压缩标准,相比VP6有更好的压缩效率。

3.3. 音频压缩格式

音频格式规定了音频数据的压缩标准,常见的音频格式有:MP3、AAC、WMA、Real audio等等。

• MP3压缩标准
MP3是一种音频压缩技术,全称是MPEG Audio Layer3,而不是MPEG-3,MPEG-3是不存在的。MP3是当今流行的一种数字音频编码和有损压缩格式,它设计用来大幅度地降低音频数据量。正是因为MP3体积小,音质高的特点使得MP3格式几乎成为网上音乐的代名词。

• AAC压缩标准
AAC全称为高级音频编码技术(Advanced Audio Coding),出现于1997年,是基于MPEG-2的音频编码技术,目的是取代MP3格式。2000年,MPEG-4标准出台,AAC从新整合了其特性,故现又称MPEG-4 AAC,即m4a。作为一种高压缩比的音频压缩算法,AAC压缩比远胜过MP3,但流行程度却不如MP3。

• WMA压缩标准
WMA的全称是Windows Media Audio,是Microsoft公司制定的一种音频压缩标准,它包括WMA1, WMA2等多个版本。WMA是仅次于MP3的一种流行的有损压缩音频格式,且在压缩比和音质方面都超过了MP3。另外,WMA还包括WMA Lossless无损压缩格式。

• RealAudio压缩标准
RealAudio是RealNetworks制定的一种音频压缩标准,它包括COOK, RAAC, SIPR等多个版本。RealAudio音频标准对于声音和音乐均有较好的压缩性能,除了广泛使用于RealMedia中,纯音频的RealAudio也较流行,常被用于网络电台直播等场合。

4. 高清影片硬件加速技术
高清(High Definition, HD)影片,一般意义上是指影片图像分辨率达到720p(1280x720 progressive scan, 即1280x720逐行扫描)或1080i(1920x1080 interlaced scan, 即1920x1080隔行扫描)及以上。目前支持高清DVD (HD DVD)和蓝光 (Blu-ray)碟片则更倾向于将片源编码为1080p(1920x1080 progressive scan, 即1920x1080逐行扫描)。相比较标清影片(Standard Definition, SD),比如DVD,高清影片单位时间内处理的图像像素数目为标清影片的5~6倍;相应地,DVD的典型码率为9.5Mbps,而HD DVD或Blu-ray的码率则可高达30~40Mbps。增长数据量使得画面更加清晰、细腻,为用户带来更好的视觉体验。
目前在高清影片娱乐业务上,国内、国外情况有不同。国外用户主要通过Blu-ray/HD DVD或HDTV等渠道获取高清片源;国内用户则以网络下载为主流。网络下载的高清片源,格式不统一,需要多种支持DirectX Video Acceleration(DXVA)的解码器。下面列举常见的高清影片格式(包括文件容器格式和音频/视频格式):
•文件容器格式
﹣*.ts(早期的MPEG码流格式)/*.tp(高清MTV格式)/*.trp(HDTV转录格式)
﹣ *.mov(多见于电影预告片)
﹣ *.wmv(主要用于VC-1视频格式的高清影片)
﹣ *.mkv
•视频压缩格式
﹣ MPEG-2: 即ISO/IEC 13818
﹣ H.264: 即ISO/IEC 14496-10
﹣ VC-1/WMV9
•音频压缩格式
﹣ DTS/AC3/MP3…
4.1 支持高清影片解码加速的两大GPU技术
目前支持HD硬件解码/硬件加速的GPU主要来自两大厂家,即NVIDIA和ATI。前者从GeForce 7 series GPU开始就支持H.264/WMV格式影片的硬件加速,从GeForce 8500/8600、GeForce 8400M/8600M/8700M开始则引入PureVideo HD技术,全面支持高清影片硬件解码。与之相似,ATI从ATI Redeon® X1000 series开始就支持视频硬件加速,之后则开发了UVD(Unified Video Decoder)技术全面支持视频硬件解码。下图是NVIDIA PureVideo HD技术和ATI UVD技术的示意图:

图 4 NVIDIA(R) PureVideo HD

图 5 ATI UVD

如上图,视频解码主要分为四个模块,按照处理顺序为:
• Bitstream Processing: 主要实施对视频压缩码流的熵解码过程
• Inverse Transform: 主要实现反整数变换,将视频数据由频率域转换到像素域
• Motion Compensation: 实现运动补偿过程,完成预测编码类图像的重构
• Deblocking: 去块效应滤波模块

对上述处理模块支持得越多,则表明GPU硬件解码能力越强。
对于第一代PureVideo技术,是不能支持VC-1视频编码的硬件加速的,而对于采用PureVideo HD技术的显卡来说,虽然还不能完全支持VC-1硬件解码,但是已经可以完成VC-1除Bitsream Processing外的三个步骤,其余工作仍然留给CPU进行。
UVD是ATI针对HD DVD和Blu-ray Disc两个载体高清影片载体所对应的高清内容进行的一种硬件解码技术。未来高清规格的趋势基本已经明朗,VC-1和H.264两种编码是目前的绝对主流。以HD DVD和Blu-ray为载体的电影,码率通常较高,普通CPU无法应付。UVD则可以实现H.264/VC-1的完全硬件解码,这即是其在HD支持方面优于NVIDIA之所在。
为了应用GPU对高清影片的硬件加速功能,微软为GPU的硬件加速能力在DXVA规范中定义了若干等级。简单而言,DXVA规范是一个具有profile的标准,对DXVA不能用“支持”、“不支持”简单论之。GPU支持DXVA规范,不代表就实现了里面所有的功能,微软的DXVA 2.0标准为显卡的硬件解码加速能力分出了不同的档次。
档次区分的标准是显卡能实现硬件解码能力的差异,即前文描述的4个视频解码模块,能实现的模块越多,显卡的级别也就越高。Microsoft按照GPU能够处理的视频解码过程中模块的多少对硬件能力进行“分级”,如下图所示。

图 6 DXVA 2.0分级定义

举例而言,Microsoft将GPU对于H.264解码的能力分为了A~F共6个等级,其中A为最低,F为最高。这里,FGT(Film Grain Technology),是指胶片感,也就是影片中的颗粒感觉。未来的H.264编码器将会有FGT的开关选项,比如针对录像摄影素材则将FGT关闭,而对于胶卷摄影,出于胶卷的特性则将FGT打开,以保持特有的颗粒信息。而在影碟机一方,其解码器将识别颗粒信息,并在噪音滤波器中应用到H.264的视频流上。对于VC-1的支持,GPU则分为4级,仅支持Post Processing(如deblocking)模块的,为A级;当GPU能处理所有处理模块时,则为D级,——表明GPU可以支持硬件熵解码。
4.2 支持高清影片硬件加速功能的播放器软件产品分析
目前对高清影片硬件加速支持得最为完善、彻底的播放器产品为CyberLink PowerDVD,作为商业化播放器,CyberLink开发的解码器为目前业界所公认的对H.264/VC-1硬件解码加速支持最为完善的产品。而在多格式支持类播放器领域中,通过分析可以发现:包括KMP、暴风影音、风雷影音、终极解码在内的所有播放器均采用了所谓“外部滤镜支持”的方式来实现对高清影片的硬件解码加速——即通过挂接CyberLink开发的H.264/VC-1解码器(破解版本),并配合NVIDIA/ATI提供的MPEG-2解码器来实现高清影片硬件解码加速,当然在挂接这些支持DXVA的filter(主要是指相应的video decoder)同时,在source filter/splitter filter/effect filter(e.g. 字幕插件、mixer filter…)的选择上与解码一般类型影片时有所不同。
以受到很多高清影片fans青睐的“终极解码”为例,FinalCodecs1.8.0629在其安装目录中的Codecs子目录下,引入了如下DLL/ax文件:
• CyberLink Corp.
264be.dll、264dmmx.dll、264dsse2.dll、264dsse3.dll、264dsse.dll、CL264dec.ax、CLAud.ax、CLAudioCD.ax、CLDemuxer.ax、CLVc1Dec0.ax、CLVc1Dec.ax、CLVsd.ax、PL2XDLL.dll、vc1dc.dll、vc1dmmx.dll、vc1dsse2.dll、vc1dsse.dll、CLAudRC.dll
• ATI Technologies, Inc.
atidvcr.dll
• NVIDIA Corporation
nvauddec.ax、nvviddec.ax、nvvpp.ax
通过对上述filter所支持的pin input的分析,可以总结其各自的用途:

表 3 支持DXVA的filter分析

CyberLink

CL264dec.ax

H.264/AVC Decoder [PDVD8]

用于支持硬件解码H.264编码的HD影片,预测其在工作过程中会根据用户CPU类型有选择性地调用264be.dll264dmmx.dll264dsse2.dll264dsse3.dll264dsse.dll

CyberLink

CLVc1Dec.ax

VC-1 Decoder [PDVD7.x]

用于支持硬件解码VC-1编码的HD影片,预测其在工作过程中会根据用户CPU类型有选择性地调用vc1dc.dllvc1dmmx.dllvc1dsse2.dllvc1dsse.dll

CyberLink

CLVc1Dec0.ax

与上相同

使用二进制比对确认与CLVc1Dec.ax完全一致,估计为实现多实例化而准备

CyberLink

CLVsd.ax

Video/SP Decoder [PDVD8]

用于支持硬件解码MEPG-1/2编码的HD影片

CyberLink

CLAud.ax

Audio Decoder

用于DVD音频流解码,支持AC3DTS…,无硬件加速功能

CyberLink

CLAudioCD.ax

AudioCD Filter

用于CD类音频流解码

CyberLink

CLDemuxer.ax

Demux

MEPG-2流分离器

ATI

atidvcr.dll

共包含22filter,涉及Encoder/Decoder/Multiplexer /Post Processing,其中Video Decoder支持MPEG-1/2H264MP4。在终极解码的“解码中心”配置中未提供对ATI Video Decoder的选择,故怀疑其主要用于Post Processing类的硬件加速,包括色彩控件转换、图像RotationNoise Reduction等,在ATI官网上有较为详细的描述。

NVIDIA

nvauddec.ax

Audio Decoder

用于DVD音频流解码,支持AC3DTSDolby AC3

NVIDIA

nvviddec.ax

Video Decoder

用于支持硬件解码MPEG-2编码的HD影片,从pin所支持的类型来看,NVIDIAMPEG-2的支持完全符合DXVA,其清晰地提供了从MPEG-2_AMEPG-2_D的分级加速支持

NVIDIA

nvvpp.ax

Video Post Processor

用于视频后处理,具体支持的特效未知



通过上述分析可以看出,终极解码通过挂接破解版本的CyberLink H.264/VC-1解码组件、ATI组件和NVIDIA解码组件来实现对HD影片的硬件解码加速。
下面再以用户装机量较大的产品“暴风影音”为例,简单分析一下暴风影音是如何支持高清影片硬件加速的。暴风影音3.15万能版本中加入了高清硬件加速功能,在Storm3.8.3.27安装包中可以发现若干个来自CyberLink、ATI和NVIDIA的DLL/ax,但可以发现其缺少与CyberLink VC-1 Decoder相关的几个filter。
通过对终极解码的分析,我们总结出:“高清硬件加速功能的实现是通过挂接破解版本的CyberLink H.264/VC-1 Decoder实现”;结合暴风影音安装包内的DLL/ax,可以肯定:暴风影音对高清硬件加速的支持方式与终极解码相同。Storm3.8.3.27未发现CyberLink VC-1 Decoder,故其无法支持VC-1格式的高清硬件加速。
在最新版本storm3.8.5.15中,暴风影音终于加入了CyberLink VC-1 decoder。至此我们可以得到两个结论:
1. 暴风影音已经增加对VC-1格式编码的高清影片硬件加速的支持;
2. 暴风影音“高清硬件加速”的实现与终极解码的实现方式几乎完全一致,所不同的是暴风影音更为智能(也表现得更加傻瓜式),估计其在内部完成了高清影片判断逻辑,从而在必要时自动加载相应的支持DXVA的filter。而终极解码需要通过用户手动配置挂接相应的filter,才能实现硬件加速。

1 0
原创粉丝点击