[英]Virtual Webcam in C++
我想编写一个新的虚拟网络摄像头驱动程序,例如,它将采用 AVI 或实时流作为屏幕并将其作为网络摄像头源进行流式传输。
我真的没有网络摄像头,我想添加一个可以传输桌面屏幕的虚拟网络摄像头。
我应该在内核模式下编写一个网络摄像头吗? 如果是这样,你能指导我一个示例网络摄像头驱动程序吗?
如果我应该在 DirectShow 中执行此操作,如何将网络摄像头设备添加到控制面板的网络摄像头列表中,例如在 Yahoo messenger 中,我可以选择该设备作为网络摄像头并将我的桌面作为网络摄像头图像进行流式传输。
我该如何开始?
您需要编写一个 DirectShow 源过滤器。 Windows SDK 包含一个名为baseclasses的库,可帮助您开发此类过滤器。 请参阅CSourceStream以获得一个好的起点。
要让设备显示在其他视频流设备下,您必须在 CLSID_VideoInputCategory 下使用 DirectShow API 注册您的过滤器。 您不需要/不应该编写内核驱动程序。
您可以从 DirectShow 包下的示例“amcap”开始,这是一个非常适合初学者的示例。 如果要列出网络摄像头设备,请转到 ChooseDevices() 方法。
您需要开发 DirectShow Source Filter 来创建虚拟摄像机,请先阅读此内容
https://docs.microsoft.com/en-us/windows/win32/directshow/writing-source-filters
然后你可以采用
https://github.com/roman380/tmhare.mvps.org-vcam
您可以在此示例虚拟相机之上工作。
这实现了IAMStreamConfig
和IKsPropertySet
接口
这是使用实现IPin
和IBaseFilter
CSourceStream
和CSource
类IBaseFilter
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.