设备驱动程序作为虚拟网络摄像头

7


我正在寻找编写虚拟摄像头驱动程序的方法,有人有什么想法吗?
是否有任何有用的书籍或链接。

添加更多细节: 我已经开发了一个设备驱动程序,它将图像保存到磁盘,并使用设备驱动程序来显示图像。性能似乎不好。 我使用的函数有: //用于捕获图像 GetDesktopWindow() CreateCompatibleBitmap() Save() //用于显示图像 WM_MOUSEMOVE 每次调用捕获和显示图像 但是显示不连续,只有在窗口失去焦点并再次获得焦点后才会出现

我应该使用其他技术来记录或显示图像,哪种方法会产生有益的结果,请帮忙。

谢谢, - mitesh

1个回答

15
你所说的虚拟相机驱动是什么意思?
使用DirectShow可以编写虚拟捕获设备,然后应用程序(如skype等)可以使用此虚拟捕获设备。如果这满足您的需求,您可以从http://tmhare.mvps.org/downloads.htm下载vcam,下载链接在“Capture Source Filter”下。
编辑: 为了在我发布的链接中使用该捕获设备,您需要下载Windows SDK。 Windows SDK有一个名为“GraphEdit”的工具,如果您搜索在线,我相信您可以找到一个快速的GraphEdit教程。基本上,GraphEdit允许您通过连接一堆过滤器构建多媒体管道。(例如,在您的计算机上播放电影时背后发生的情况。)这可能是这样的:
网络摄像头->渲染器
或者
文件源->某个解码器->渲染器
并且会导致您看到网络摄像头捕获的视频或文件内容。示例下载演示了如何构建虚拟捕获设备,即它看起来像是来自“真实”捕获设备的媒体,但实际上,如果您将代码适应于特定的方法,即可生成任何您想要的视频,例如进行屏幕截图并输出。如果正确注册,像skype这样的应用程序可以捕获您的虚拟捕获设备。
了解是否满足您的需求最简单的方法是下载捕获源过滤器,使用regsvr32命令将其注册,然后使用GraphEdit将捕获源插入图形中,将源连接到视频渲染器并点击播放按钮。以上提到的许多概念/关键字可能对您来说很新,但您可以阅读每个主题,并且这可能会使您有一个开始的点。
编辑2: 如果捕获源过滤器方法不足以满足您的要求怎么办? 1)如果我没有记错,您曾在您(现已删除的)答案中表示希望进行屏幕截图,并将其用作虚拟摄像头设备,以供诸如skype之类的应用程序使用。如果您只需要这些,那么您不需要编写设备驱动程序。通过捕获源过滤器,DirectShow可以完美地完成这项工作。然后,您需要:
  • 学习一些基本的DirectShow知识。
  • 修改捕获过滤器的源代码以获取屏幕截图等。
至于编写设备驱动程序的书籍,我不清楚是否有相关的资料。我的意思是,您需要确定您是否实际上需要编写设备驱动程序,或者仅仅修改开源捕获过滤器就足够了。

我想了解的是捕获设备的功能是什么,它是否会存储图像或者如何将其传输到其他地方。 - mitesh keswani
我需要编写一个视觉摄像头的代码,它作为设备驱动程序工作,并希望有一些书籍或链接可供参考。 - mitesh keswani
根据项目的要求,我需要编写一个设备驱动程序,不断地向显示软件提供图像。 请给我提供一个最好的链接或书籍,以便我能够进行相关工作。提前感谢。 - mitesh keswani
我已经修改了问题并添加了更多细节,请帮我处理这些细节。 - mitesh keswani
@Ralf:我能否使用任何Web编程语言将DirectShow滤镜的输出显示到浏览器或WebRTC视频会议室中? - user3653474

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接