首先先来说说解码器,分离器以及 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 加速(运动补偿,也就...