首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态创建多个DirectShow虚拟摄像头设备

动态创建多个DirectShow虚拟摄像头设备
EN

Stack Overflow用户
提问于 2022-01-19 08:37:32
回答 1查看 138关注 0票数 1

我试图创建一个虚拟摄像头DirectShow过滤器与多个虚拟设备。

摄像机的定义如下:

代码语言:javascript
复制
CFactoryTemplate g_Templates[] =
{
    {
        SUB_DEVICE_NAME_0,
        &CLSID_VirtualCam_0,
        CVCam::CreateInstance0,
        NULL,
        &AMSFilterVCam_0
    },
    {
        SUB_DEVICE_NAME_1,
        &CLSID_VirtualCam_1,
        CVCam::CreateInstance1,
        NULL,
        &AMSFilterVCam_1
    }
};

初始化由以下static方法完成:

代码语言:javascript
复制
CUnknown * WINAPI CVCam::CreateInstance0(LPUNKNOWN lpunk, HRESULT *phr)
{
    return new CVCam(NAME(DEVICE_NAME_0), lpunk, phr, CLSID_VirtualCam_0, 0);
}

CUnknown * WINAPI CVCam::CreateInstance1(LPUNKNOWN lpunk, HRESULT *phr)
{
    return new CVCam(NAME(DEVICE_NAME_1), lpunk, phr, CLSID_VirtualCam_1, 1);
}

是否有可能更动态地这样做,这样我们就不必硬编码每个摄像机,而是可以在运行时传递一个参数?

致以敬意,

EN

回答 1

Stack Overflow用户

发布于 2022-01-19 12:37:17

动态加法和移除相机是可能的。然而,这与你在问题中所想的完全不同。DirectShow BaseClasses为您提供了将静态声明转换为注册和DirectShow示例代码演示DLL导出如何连接到这些助手以满足注册需要。的特定助手。

要使其动态化,您需要扩展AMoveDllRegisterServer2为大多数筛选器项目所做的工作,并根据您的需要对其实现进行调整。

RegisterFilters可能是一个很好的起点,您可能想让它成为一个循环或什么的。您将不得不处理额外的fm->RegisterFilter(...调用的额外虚拟相机,你想要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70767510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档