我有一个想法,但不知道是否可以这样做:
是否可以编写一个可以将视频源多路复用到任何需要它的软件的 USB cam 驱动程序?一种“中间人”司机:)
是的。至于这如何取决于系统。你甚至没有说你在说什么操作系统。无论如何,windows 和 linux 都支持调用其他驱动程序的驱动程序。
如果您需要 Linux 驱动程序,请查看 v4l 环回驱动程序:
http://www.lavrsen.dk/foswiki/bin/view/Motion/VideoFourLinuxLoopbackDevice
应该可以将它与一些用户代码结合起来做你想做的事。
对于 Windows,您可能可以使用 DirectShow 在用户空间中执行某些操作。
这在 Windows 驱动程序模型中也应该是可能的。它被称为“上层过滤驱动程序”,位于常规驱动程序和用户空间之间。
底层驱动程序显然是独占的,而您的过滤器不应该是。那么阅读这篇关于如何使驱动程序(非)独占的博文可能是明智的。
嗯,如果它是 GNU/Linux、MacOS 或任何其他支持的操作系统,则可以使用足够简单的 FUSE 模块来多路复用设备节点......如果明天之前没有任何响应,我会尝试敲一下Perl(如果我能找到我的摄像头...):)
前段时间我考虑过编写这样的代码(作为内核模块),但它最终被搁置了——这个想法实际上是针对网络摄像头的,但可以应用于提供一个多路复用的只读设备节点,抽象任何其他设备提供数据流的节点...
可能想看看 FTDI 芯片 http://www.ftdichip.com/
有适用于许多操作系统的驱动程序。
也可以看看上面已经有 USB 芯片的 Arduino 板。 http://www.arduino.cc/。