win10 + VS2013下载directshow相关示例代码及directshow库文件调用

来源:互联网 发布:github 网络中立 编辑:程序博客网 时间:2024/06/07 03:31

最近需要做虚拟摄像头,网上下载了一个现成的代码调试,用directshow,记录一下环境配置和修改部分,给有需要的朋友

1,环境配置:下载dierectshow

vs2013可以自行扩展下载相关代码,不需要自己安装directshow的SDK(毕竟directshow的SDK很早就集成到windows的SDK中去了,安装windowsSDK太麻烦了),参考windows 10+VS2015配置directshow

最后得到的是下面这样一个文件夹目录

2,下载虚拟摄像头代码并配置

源代码链接:Directshow实现的虚拟摄像头  

用vs2013打开工程,vs2013问你是不是更新什么的,一并选择“是”

然后你会看到#include <streams.h> 无法打开源文件这种问题,因为我们还没有把dshow的库文件包含进去

在属性管理器中新建一个名为directshow的属性文件

配置如下:

包含目录增加.\dshow\include\baseclasses

库目录增加.\dshow\lib

添加依赖项增加strmbasd.lib

这样再编译会出一些warning,如下

警告 1 warning MSB8012: TargetPath(VirtualCamera\.\Debug\VirtualCamera.dll) does not match the Linker's OutputFile property value (VirtualCamera\VCam.ax). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile). C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets 1186 5 VirtualCamera

意思很明显,配置中目标路径和文件与链接器中配置不一致,查看

故调整,输出文件固定为VCam.ax,修改如下:

还有错误

错误 4 error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) 已经在 LIBCMTD.lib(typinfo.obj) 中定义 \VirtualCamera\MSVCRTD.lib(ti_inst.obj) VirtualCamera
这种错误显然是重复定义造成的,修改是:

在忽略特定默认库里面添加libcmtd.lib,再编译生成,就可以得到VCam.ax文件了。这就是虚拟摄像头

3,运行测试与调整

用管理员权限打开命令行界面,cd到工程目录下,输入regsvr32 vcam.ax 运行(注销虚拟摄像头用regsvr32 -u vcam.ax),弹出如下框说明注册成功

尝试一下QQ采用这个虚拟摄像头的效果,

打开QQ系统设置,选择音视频通话,摄像头选择虚拟摄像头就可以预览到效果。


如果发现预览会失败,会导致QQ崩溃。可以修改源文件。


0 0