【问题标题】:DirectShow.Net v2.1 show black screen with Logitech C920DirectShow.Net v2.1 使用罗技 C920 显示黑屏
【发布时间】:2023-03-22 19:45:01
【问题描述】:

我正在使用 DirectShow.Net v2.1 预览网络摄像头的图像。

它工作正常,但在一些较新的网络摄像头上,如全高清 1080p 的罗技 C920,它显示黑屏而不是网络摄像头的图像。

我的项目在 C# WinForms 中并使用 .Net v2.0 编译 我想在 Windows XP / 7 / 8 / 8.1 上运行我的项目

谁能帮我解决一下?

【问题讨论】:

  • 当您使用 DirectShow 时,您需要告诉有效的过滤器图形拓扑在使用中。没有这个,没有错误代码,故障排除是在黑暗中拍摄。
  • @RomanR。我不是硬件方面的专家...我在哪里可以找到关于您的评论的好示例?
  • 参见“这会将我们的图形添加到运行对象表”中的this,然后是:Loading a Graph From an External Process
  • @RomanR。嗯,这对我来说看起来很复杂。我应该更改代码吗?还是用户的操作系统?或者我应该构建需要附加到我的代码的额外文件?为什么 DirectShow 本身没有使用我必须这样做的有效过滤器图形拓扑?

标签: c# .net-2.0 webcam directshow.net wia


【解决方案1】:

使用this sampleDirectShow.Net 替换为 WIA 是解决方案。

WIA 更符合要求,因为:

  1. 不关注 Windows Vista,它似乎没有在其 WIA 中捕获网络摄像头。
  2. 预览不需要修改,拍照,录像。
  3. 它看起来更容易使用。
  4. 项目会非常轻松。
  5. 适用于所有相机。
  6. 为您提供按操作系统选择的内置相机。

【讨论】:

  • WIA 不做视频,对硬件的支持有限。
  • @RomanR。实际上,用 DirectShow.Net 替换 WIA 解决了我的问题。你认为它在其他设备上可能会出现问题吗?
  • 取决于您感兴趣的设备/硬件类别。API 不可互操作。 WIA 用于静止图像,DirectShow 用于视频/流媒体/相机。
  • @RomanR。好吧,我不想以非常专业的方式使用网络摄像头。我只是想向用户展示他们的相机工作正常并且已连接。
【解决方案2】:

罗技 C920 的问题可以轻松解决。 只是通过强制另一个决议。认为这台相机可能有 19 分辨率,所以只需将这一行放在前面:

VideoSource.Start

YourSourceVideoName.VideoResolution = YourSourceVideoName.VideoCapabilities(X)

X 是一个整数,重新分配给数组:0 表示分辨率较低,18 表示分辨率较高。尝试使用 0,您会看到相机以图像开头。然后尝试越来越高,直到没有图像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多