2

我正在使用我在网上找到的 WebCam_Capture 代码通过 C# 访问网络摄像头。在具有一个视频源的计算机上,它就像一个魅力!(程序在启动时启动,找到网络摄像头并且它可以工作)。

尽管在具有许多视频源的计算机上(例如网络摄像头,然后在其上运行许多摄像头),但程序会启动并询问用户要使用哪个源。我希望我的程序在机器重新启动时自动启动,所以等待用户输入会引发麻烦,无论如何我可以强制它只选择说第一个找到的源并使用它?

所以我有一些网络摄像头代码,我确实在这里找到了:

http://channel9.msdn.com/forums/TechOff/93476-Programatically-Using-A-Webcam-In-C/?CommentID=94149

现在在准备这篇文章时,我做了更多的研究,发现我的问题在于上述代码的这一行:

SendMessage(mCapHwnd, WM_CAP_CONNECT, 0, 0);

这就是连接网络摄像头的原因,唯一的问题是,如果我有多个来源,上面会显示这个烦人的视频来源对话框。我希望它只使用第一个来源,这样对话框就不会出现。我尝试在 0 所在的位置传递不同的值,果然对话框没有出现,但它也不起作用。任何人都知道是否有一个值可以传递给 SendMessage 以暂停对话框,但让它选择它找到的第一个视频源?

4

1 回答 1

1

我发现的唯一提示是第一个 0 是相机索引:

SendMessage(_windowHandle, WM_CAP_CONNECT, _videoSourceIndex, 0)

尝试给出 0,1,2,直到连接所需的相机。请注意,在网络摄像头响应之前,最多可能需要 5 秒。其中一些非常慢。

But the best suggestion would be to try out DirectShow.NET library as it is much more capable than the API you're currently using.

于 2010-05-21T13:21:16.730 回答