c# - 是否可以通过编程方式确定视频是否正在播放?

标签 c# .net video directx

是否可以(最好使用 .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/

相关文章:

c# - 流式传输到图像并返回

javascript - 如何检测是否将内联播放 html5 视频

c# - Excel 在 *.xlsx 中发现不可读的内容

c# - 消息队列和服务总线的消息粒度

c# - 如何将列表自定义为不同类型?

C# 使用两个不同的相等比较器

.Net Core MemoryCache PostEvictionCallback 无法正常工作

c# - .NET 如何重命名我的嵌入式资源?

java - 为什么我们需要 Java 插件来从 YouTube、Vimeo 等下载视频

video - 使用 ffmpeg 转码为 DNxHD mxf 时,渐进式或隔行式被误解