如何拦截来自网络摄像头的视频或图像流并对其进行修改?

rwi*_*red 5 winapi video-capture

是否有一个通用的 API 调用来获取来自网络摄像头的图像或视频源的句柄,并将其替换为我自己的图像或视频,以便应用程序连接到摄像头(例如 MSN/Skype/Yahoo IM)会看到我的图像而不是相机拍摄的图像吗?

理想情况下,我试图以独立于设备供应商或接口的通用方式解决这个问题(通过所有这些应用程序使用的标准网络摄像头堆栈,如果存在这样的事情)。

它适用于需要能够禁用客户端上的网络摄像头的安全应用程序,而不是出于特定目的。我可以通过代码停止和启动图像捕获设备,但理想情况下,我更愿意让设备保持启用状态,并用图形替换捕获的图像,告诉用户他们当前无法使用他们的凸轮的原因。

Stu*_*lar 3

大多数设计为一般工作的现代网络摄像头通常会实现为 WDM 设备,然后将其公开为 DirectShow 内核过滤器。然后,应用程序可以使用 DirectShow 来处理实时视频流。可以编写一个具有很高优点的自定义过滤器,可以尝试将其自身插入到任何相关图表中,然后动态修改视频流。然而,这种技术当然不是万无一失的,并且可以很容易地解决。还有其他视频捕获技术不会受到此方法的影响。简而言之,没有可靠的方法可以为所有设备或安全地执行您想要的操作。如果您只是希望能够使用标准网络摄像头并以非安全方式以编程方式更改视频源,那么上述技术将起作用。

在此处查找一般 DirectShow 信息,并在此处查找有关视频捕获的信息。AmCap和EZRGB24样本也是一个不错起点。