这里记录一下网上Vivek‘s Capture Source Filter filter(虚拟摄像头项目)的build与测试过程。
从 git的tmhare.mvps.org-vcam 项目,下载项目代码。
git项目有详细的说明,可以参照说明build项目下载 DirectShow BaseClasses 项目
baseClasses项目包含了有用的基础directshow 类,source filter需要集成这些基础类类,以方便写新的filter.-
使用visual studio 9 打开baseclasses项目,
点击baseclasses.sln, 会打开项目和解决方案更改对话框:
由于visual studio 版本比较高,我们需要按要求对项目单项升级一下,点击确认。
IDE自动开始迁移解决方案和项目,完成后,弹出迁移报告,确认无误后,就可以看到visual 9熟悉的项目目录了:
迁移完的项目:
-
点击项目属性,修改输入目标(dll名称)为 strmbasd,默认使用项目名称,与这个项目的配置会有冲突,编译会有警告提示,修改后就可以顺利编译:
点击 生成->生成解决方案,build baseclasses项目:
生成的lib为 strmbasd.lib,现在将这个lib库copy到一个可共享的目录中方便其他项目引用:
-
打开下载的 Vivek‘s Capture Source Filter filter项目,双击Filters.cpp,可以看到缺少<streams.h>头文件,这个文件及来源base库。
到该项目的下载目录,找到directshow.props文件,并用文本编辑器打开:
a. 修改directshowSamplesDir, 使得$(DirectShowSamplesDir)\baseclasses指向前面获取的baseclasses项目路径
b. 修改link配置,指向strmbasd.lib的放置路径,并修改baseclasses.lib为strmbasd.lib
重新打开vcam项目,这是就可以去掉错误提示了。点击“生成” ->"生成解决方案",确定项目可以成功build,打出的dll库名为filters.dll:
-
使用regsvr32注册filters.lib
regsvr32 Filters.dll
可以通过注册表,搜索vcam的clsid({8E14549A-DB61-4309-AFA1-3578E927E933})查询注册结果:
-
使用grapheditor测试vcam
7.1 打开本机安装的windows 10 sdk(安装版本不一样,路径不一样),注册proppage.dll
regsvr32 proppage.dll
7.2 双击打开grapheditor.exe
7.3 点击“inserver filter into ghaph”按钮 或 点解 graph-->insert filter 菜单,插入我们注册的virtual cam:
7.4 点击插入color space converter 和 Enhanced Video Renderer
7.5 通过拖拽输出端口,将三个filter链接起来:
7.6 点击 播放 按钮, 就可以看到vitual cam的效果了:
reference:
- windows directshow samples: https://github.com/microsoft/Windows-classic-samples/tree/main/Samples/Win7Samples/multimedia/directshow/filters
- tmhare.mvps.org-vcam project: https://github.com/roman380/tmhare.mvps.org-vcam
- grapheditor.exe 路径: C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64