在 C# 中获取网络摄像头的当前状态

2024-02-14

我试图弄清楚如何检查网络摄像头/视频捕获设备是否已被另一个应用程序使用,而无需实际激活它。

我当前的方法是使用 AForge.NET 库并使用 VideoCaptureDevice 对象的 .IsRunning 属性,如下所示:

 var videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
                
 foreach (FilterInfo videoDevice in videoDevices)
 {
    VideoCaptureDevice camera new AForge.Video.DirectShow.VideoCaptureDevice(videoDevice.MonikerString);
    Debug.Print(camera.IsRunning)
 }

我猜想 IsRunning 属性仅适用于已开始使用该库的 VideoCaptureDevices,并且我需要对设备进行较低级别的 DirectShow 访问。

虽然在 C# 中使用 DirectShow 的方法有很多,但即使在 C++ 中使用 DirectShow,我也无法找到检查状态的方法。我需要在这里施展什么魔法吗?

Thanks

托比亚斯·廷普


我不完全确定这是否对您有帮助,但我发现您的问题是因为我想编写一个自定义应用程序来控制我的忙碌灯。这在很大程度上是“在我的机器上运行”认证的 - 这并不是试图给出一般性答案。但是,我认为它可能对您有所帮助,并且可能对下一个在谷歌搜索时看到此页面的人有所帮助......

private static bool IsWebCamInUse()
{
    using (var key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\webcam\NonPackaged"))
    {
        foreach (var subKeyName in key.GetSubKeyNames())
        {
            using (var subKey = key.OpenSubKey(subKeyName))
            {
                if (subKey.GetValueNames().Contains("LastUsedTimeStop"))
                {
                    var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long) subKey.GetValue("LastUsedTimeStop") : -1;
                    if (endTime <= 0)
                    {
                        return true;
                    }
                }
            }
        }
    }

    return false;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中获取网络摄像头的当前状态 的相关文章

随机推荐

  • 如何自动重新安排气流任务

    我正在运行一个每小时的进程 从一个位置 源 获取数据并将其移动到另一个位置 目的地 在大多数情况下 数据在特定时间到达我的来源 一切正常 但可能会出现延迟 当发生这种情况时 气流中的任务会失败 需要手动重新运行 解决此问题的一种方法是为数据
  • AWS API Gateway - 尽管遵循以下教程,但仍出现 CORS 错误

    我有一个 sam 文件试图构建 lambda 函数的 API 网关 我正在关注最新的用于配置 cors 的 AWS 文档 https docs aws amazon com serverless application model late
  • 将多个文件上传到 Azure Blob 存储

    对于 Windows Azure 来说还很陌生 我已经按照这个教程进行操作 tutorial http blogs msdn com b jnak archive 2010 01 11 walkthrough windows azure b
  • 在 Express 中有条件地提供静态文件的最佳方法是什么?

    我正在构建一个应用程序 它有两个独立的部分 在前端我将其构建为两个独立的 Angular 应用程序 我这样做是为了更好地划分对代码库的控制访问权 而不是不必要地让一些团队成员访问他们不需要的代码 因此有两个独立的应用程序 由同一个 Node
  • 如何扩展 jQuery UI 日期选择器来修改“今日”按钮并添加帮助图标

    我想扩展基于 jQuery UI datepicker 小部件 并将其称为 datepickerHelp jQuery UI 日期选择器小部件 http api jqueryui com datepicker 我对扩展感兴趣而不是直接修改
  • Docker 主机的 Elastic Beanstalk 环境变量

    我有一个 EB 环境 其中正确部署了 Docker Web 应用程序 rails 我设置了几个 EB 环境变量 它们在容器中正确可见 现在 我希望这些 EB 环境变量对 EC2 实例主机可见 以便我可以在 docker 构建过程中使用它们
  • 将 scala/spark 信息写入 MongoDB

    我有一个日志数据 其中包含如下数据 Started by timer Finished SUCCESS 对于每个日志数据 日志状态 此处为 Finished 和状态 SUCCESS 需要写入MongoDB case class Logs s
  • XMLHttpRequest 和 http 流

    我的目标是从浏览器读取 HTTP MP3 音频流并访问原始音频数据 HTML5 让我可以轻松播放流 但据我所知 不允许访问原始音频数据 它只是播放它 JS XMLHTTP请求可以通过HTTP下载文件并处理原始音频数据 它似乎是一个很好的候选
  • 这个 MATLAB 循环是否有更优雅的替代方案?

    我想更好地在 MATLAB 中对循环进行矢量化 目前 我正在尝试计算整数列表中值的出现次数 我的代码与此类似 list 1 2 2 3 1 3 2 2 2 1 5 occurrence list zeros 1 max list for x
  • 为什么 uglify-js 会报告“警告:输出超过 32000 个字符”?

    构建管道是 Typescript browserify browserify css uglify 运行时库 react bootstrap 到目前为止 我的应用程序功能很少 这就是为什么我问这是否会在以后困扰我 即使它现在看起来可以工作
  • 析构函数与 IDisposable?

    我读过有关在 C 中处置对象 IDisposable 接口和析构函数的内容 但对我来说 它们似乎做了同样的事情 两者有什么区别 我为什么要使用其中一种而不是另一种 事实上 在这个示例 下面的链接 中 这段代码同时使用了 IDisposabl
  • 语音识别和语音合成入门

    我想开始语音识别和语音合成 在基于语音识别的原型 https stackoverflow com questions 3865351 prototype based on speech recognition有人告诉我使用微软语音服务器 s
  • 显示相同项目的放大弹出窗口

    参考这个question https stackoverflow com questions 26151953 magnific popup showing first item only 它有一个有用的答案 但它是部分答案 因为它只显示三
  • Ajax 调用返回整个页面

    我有以下页面 其中包含一些随机提示 http www javaexperience com tips 我只想在网站的其他页面上显示提示 因此我进行 ajax 调用并将 ajax 响应返回的任何内容添加到 Div 的 HTML 中 DIV h
  • 使用 tidyverse 或 dplyr 进行简单 mutate 引发的错误

    我在使用 tidyverse 包时遇到了严重的问题 无法调试 例如 即使在我过去已经制作的项目中 mutate 也无法正常工作 这一切都是从我安装以下软件包时开始的 library pdftools library tm library s
  • 我不小心删除了 Android 密钥库,如何恢复?

    好吧 我的动作很顺利 我现在无法更新市场中的任何应用程序 因为我不小心删除了我的 Android 密钥库 有谁知道我怎样才能把它拿回来 我尝试过运行恢复程序 但由于某种原因它没有出现 如果您丢失了私钥 它将永远消失 除非您有备份 如果您可以
  • 在asp.net 3.5中导出为pdf

    我正在开发一个 asp net 3 5 应用程序 并且有一个包含表格表单数据的页面 我需要将其导出为 pdf 并进行一些额外的格式化 该页面还有一些图像位于同一表格内 一些图像位于表格外 我也希望将这些图像导出为 pdf 我怎样才能在asp
  • 如何查看php字节码文件

    我这样做是为了学习目的 我读过很多文章 PHP 首先将其源代码转换为字节码 但我无法找到一种方法来查看字节码格式 它是什么样子的 在java和C中有很多方法可以查看字节码文件 但无法在 php 中找到任何文章来查看转换后的字节码 要将 PH
  • 运行集成测试时,构建在 Jetty 启动时等待

    我正在尝试运行一些集成 验收测试 我只想在传递环境变量时运行这些测试 因此我使用以下命令 mvn clean install Denv acceptance 但构建停止于 2015 09 28 18 56 19 273 INFO oejsh
  • 在 C# 中获取网络摄像头的当前状态

    我试图弄清楚如何检查网络摄像头 视频捕获设备是否已被另一个应用程序使用 而无需实际激活它 我当前的方法是使用 AForge NET 库并使用 VideoCaptureDevice 对象的 IsRunning 属性 如下所示 var vide