我的任务是修改使用DirectShow进行视频渲染的应用程序。旧的应用程序工作正常,但它开始显示年龄。
由于我有游戏背景,我认为我应该这样做。在使用不同的技术制作了一堆原型之后,我非常确定我可以提取视频到纹理的渲染,并使用DirectX来满足所有客户的要求。
然而,我现在正处于一个必须选择技术的地步,我不能再迷失......
DirectShow显然是最古老的,但仍然运行良好,也主要是因为可用的大量编解码器。
媒体基金会已经推出了Windows Vista,并且在Windows 8之前有一个名为“媒体会话”的东西,之后他们推出了“媒体引擎”。 如果我是正确的编解码器被称为MFT?实际上有哪些网站可以像free-codecs.com一样提供这些网站?
除了这两种技术之外,还有DXVA,它允许您将视频解码卸载到GPU。目前,我遇到了3种不同的类型。 DXVA1是自XP以来一直存在的实现,DXVA2是更新的API。 但什么是DXVA-HD?它比DXVA2更新还是等同名称?
我真的想转向媒体基金会,开箱即用的编解码器非常适合客户想要使用的格式。我所关心的是为它获取编解码器是多么容易...... Windows 8+默认媒体播放器是否仍然具有DirectShow和MF渲染路径并且即时交换它们还是微软完全逐步淘汰DirectShow?
我也无法完全理解DXVA应该如何工作。鉴于我想基本上在游戏中渲染视频,只有让所有渲染实际发生在GPU上并将应用程序逻辑保留在CPU上才有意义,但我真的找不到任何关于如何使用Media使用它的好例子基础。这主要是因为我不知道DXVA2和DXVA-HD之间的区别。 Windows 7 SDK附带了所有3个实现的示例......
如果有人能够以粗体回答我的问题,请纠正我的错误信息并指出我正确的方向(DirectX + Media Foundation + DXVA-无论如何),我将非常感激!它可以像“将Windows 7 SDK的这三个示例结合起来以获得您想要的内容”一样简单。
整个任务的目标是让应用程序再次成为顶级形式,我想绝对肯定我会选择像DirectShow已经拥有的技术,这将持续下一个十年:P
答案 0 :(得分:7)
如果我正确的编解码器被称为MFT?实际上是否存在像free-codecs.com这样的网站?
编解码器通常是软件项,可以从压缩格式解压缩到解压缩(解码器),反之亦然(编码器)。这两个API都不是以精确的编解码器操作,而是为具有输入和输出的组件定义通用接口,例如,过滤DirectShow,DirectX媒体对象(DMO)或其演变 - 媒体基础变换(MFT)。
MFT是Media Foundation的基础组件:编码器,解码器,效果器,缩放器,视频捕获设备 - 内部都有MFT,而更高级别的API就建立在它之上。
由于对媒体基金会的兴趣有限,整体第三方MFT是一件罕见的事情。虽然您可以在DirectShow过滤器外形中找到几乎任何内容,但Media Foundation和MFT并非如此。
但什么是DXVA-HD?它比DXVA2更新还是同等名称?
DXVA-HD是DXVA 2.0系列API的一部分,涵盖硬件加速视频处理。它作为公共低级接口提供,也集成在DirectShow和Media Foundation库存组件中。
Windows 8+默认媒体播放器是否仍然具有DirectShow和MF渲染路径并且可以即时交换它们还是Microsoft完全逐步淘汰DirectShow?
是的,WMP 12仍有两者。 Windows 10电影&电视播放器只是MF。
鉴于我想基本上在游戏中渲染视频,只有让所有渲染实际发生在GPU上并将应用程序逻辑保留在CPU上才有意义,但我无法找到任何关于如何的好例子使用Media Foundation来使用它。
DirectShow和Media Foundation都提供支持DXVA的股票解码器(主要用于H.264但不仅仅是)。我会说DirectShow实现相当不灵活,旨在与EVR一起使用。 Media Foundation的实施更加灵活,可以在MF管道之外用作MFT。然而,两者都是为了隐藏所有复杂性并在幕后自动使用DXVA解码。
...我想绝对肯定我会选择像DirectShow已经拥有的技术,这将持续下一个十年
DirectShow仍然是传统API,在样本,代码,公共信息,文档,第三方可扩展性方面提供更多慷慨的产品。媒体基金会是一个预期的替代品,它对它的兴趣非常有限。与DirectShow相比,它基本上没有提供太多东西,微软没有开发它以涵盖DirectShow的功能集 - 通常期望从更新的API,不提供有用的开发人员工具。看起来人们认为MF是一个更新的东西应该自己出售它,但最终它没有成功:
[...]
但请记住,即使是7年前,DirectShow已经有15年了。基类从一开始就以源代码形式发布。他们关心的程序员已经有超过20年的关注。这些问题很久以前就被解决了。
[...]
现在,说了这么多,Redmond的人认为DirectShow是一种死技术。由于完全逃避我的原因,他们已经转移到媒体基金会。我已经找到了Media Foundation比DirectShow更好地解决的问题。其固有的局限性意味着它存在根本无法解决的问题。我永远不会理解为什么他们选择重新开始,而不是修补他们在DShow中不喜欢的任何东西。尽管词汇不同,但基本概念完全相同。这只是浪费资源。