是否可以(最好使用 .NET)确定视频当前是否正在播放?即使仅限于硬件加速播放,也聊胜于无。
如果我能确定它在多显示器系统中播放的是什么显示器,则可加分。
最佳答案
调查 DirectShowSpy来自 alax.info。这将允许您“监视”正在运行的 DirectShow 图形。与 GraphStudio 等工具结合使用非常有用.
我是一名编写 DirectShow 应用程序的 C++ 开发人员,并且一直使用这两种工具,它们是不可或缺的调试工具。
谷歌运行对象表的主题。 DirectShow 图(通常)添加到运行对象表中,因此您可以枚举 ROT 以确定系统上正在运行哪些图。
您的视频卡将使用 DirectShow 渲染器过滤器在 Directshow 图形中播放视频。渲染器通常由解码器过滤器提供。解码器过滤器执行视频解码工作,必须指示解码器使用 DXVA 加速。
例如,您可能在播放图中有一个 H.264 解码器过滤器,您必须指示它使用 DXVA 加速。
根据我的经验,解码器过滤器将有一个选项允许您打开/关闭 DXVA 加速视频解码,但这将特定于所讨论的解码器,因此将更加困难普遍检测。
因此,例如,您可能会编写代码来检测 DXVA 是否已启用,方法是在正在解码 H.264 流的运行图中查询解码器过滤器,但查询 VP8 图的解码器过滤器的代码很可能具有不同的代码代码。
This MSDN link支持我的经验,即通过解码器过滤器切换 DXVA 加速;可能有一些查询显卡的方法,但我认为这将是特定于 gfx 卡供应商的。
抱歉,答案不够具体,但我希望它能为您指明正确的方向...
关于c# - 是否可以通过编程方式确定视频是否正在播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952529/