问题背景 - 有两个不同的Windows应用程序试图同时访问计算机上的网络摄像头。目前,只有一个应用程序可以访问它。我希望能够允许两个应用程序同时访问网络摄像头。我的问题的一个常见例子是,skype和yahoo messenger试图同时访问计算机上的网络摄像头。
我发现了一些允许在Windows上运行的软件(manycam.com,http://www.splitcamera.com/)。但我不确定他们是如何实现的。我想自己编写代码来实现这一点,因为我的代码需要与其他API集成。
我很感激,如果有人能够阐明如何编写设备包装器来实现这一点。
答案 0 :(得分:2)
内核摄像头驱动程序注册了几个OS定义的回调。其中一个回调用于输出流。专用的Windows应用程序有一个这个流的接口 - 你需要对这个主题做一些阅读,它不是SO的范围内可以涵盖的东西。您需要一个将在客户端应用程序和相机驱动程序之间分层的组件。此组件应截取您的相机驱动程序输出并为注册的客户端复制它。这可以在内核(过滤器驱动程序)或用户模式(最好)中实现。 http://msdn.microsoft.com/en-us/library/windows/hardware/ff557573%28v=vs.85%29.aspx是一个很好的起点。
注意:您的相机软件可能已经支持此功能(虽然我认为机会很小),在这种情况下,您应该深入了解相应的文档。