我负责修改使用DirectShow进行视频渲染的应用程序。旧的应用程序工作正常,但它开始显示年龄。DirectShow,Media Foundation,DXVA,什么?
由于我有一个游戏背景,我想我应该这样做。在使用不同的技术制作了一堆原型之后,我很确定我可以从视频到纹理的渲染,并使用DirectX来满足他所有的客户请求。
不过,我现在在我要挑一个技术一起去,我不能更失去了点...
- 的DirectShow
- 媒体基金会
- 媒体会话(<的Windows 8)
- 媒体引擎(> Windows 8中)
- DXVA1
- DXVA2
- DXVA-HD
DirectShow是明显的最古老的,但仍然非常有效,可用的编解码器的巨量也主要是因为。
Media Foundation已经与Windows Vista一起推出,并且在Windows 8之前有一些名为“媒体会话”的内容,之后他们推出了“媒体引擎”。 如果我是正确的编解码器被称为MFTs?实际上有哪些网站可以像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
首先,感谢您的广泛答复,真的很有帮助! “然而,他们都隐藏了所有的复杂性,并在幕后自动利用DXVA解码。” >我是否还需要告诉MediaEngine或其他什么才能真正使用它,或者当解码器支持它时它是否会自动发生(如果是这样,很好奇,我怎么能告诉它禁用它 - 我很难找到它) ?至于你最后的评论:你是否建议坚持使用DirectShow,并只是给予渲染到纹理处理,还是继续移动到MF上? –
'1'它是自动的;使用DirectShow在解码器上使用ICodecAPI将其禁用,如[文档](此处)(https://msdn.microsoft.com/en-us/library/windows/desktop/dd390679)和媒体基金会那里记录的那样, (https://msdn.microsoft.com/en-us/library/windows/desktop/dd797815)'2'在硬件解码器的帮助下将H.264渲染到纹理中我将采用Media Foundation。 –
我的印象是,它也有可能在设备上设置一些创建参数,以便完全禁用(或启用)DXVA--相关应用程序必须呈现大量类型,从H.264 MP4到WMV以及我不提前知道的AVI? –