win10 + VS2013下载directshow相关示例代码及directshow库文件调用
2016-11-14 19:26
756 查看
最近需要做虚拟摄像头,网上下载了一个现成的代码调试,用directshow,记录一下环境配置和修改部分,给有需要的朋友
1,环境配置:下载dierectshow
vs2013可以自行扩展下载相关代码,不需要自己安装directshow的SDK(毕竟directshow的SDK很早就集成到windows的SDK中去了,安装windowsSDK太麻烦了),参考windows 10+VS2015配置directshow
最后得到的是下面这样一个文件夹目录
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/13/e9c2c8f18b6a5004a933006783cc16db)
2,下载虚拟摄像头代码并配置
源代码链接:Directshow实现的虚拟摄像头
用vs2013打开工程,vs2013问你是不是更新什么的,一并选择“是”
然后你会看到#include <streams.h> 无法打开源文件这种问题,因为我们还没有把dshow的库文件包含进去
在属性管理器中新建一个名为directshow的属性文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/13/023bd1eae488bc7b1c8ca841fe34c0f5)
配置如下:
包含目录增加.\dshow\include\baseclasses
库目录增加.\dshow\lib
添加依赖项增加strmbasd.lib
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/13/06389893cab202fd1821fb5985ae5f16)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/13/ff25485783cf54ad656c8fdb16805075)
这样再编译会出一些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
意思很明显,配置中目标路径和文件与链接器中配置不一致,查看
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/13/e111f1c893bff9cf99342de07ef3ffb3)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/13/c8319d02a48811691499dd46fea8288d)
故调整,输出文件固定为VCam.ax,修改如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/13/fa3d096f1d35309f00349290af5b3a96)
还有错误
错误 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文件了。这就是虚拟摄像头
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/13/ae1f48d0b0d051d941d070f6f20c040b)
3,运行测试与调整
用管理员权限打开命令行界面,cd到工程目录下,输入regsvr32 vcam.ax 运行(注销虚拟摄像头用regsvr32 -u vcam.ax),弹出如下框说明注册成功
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/13/aa5ebf1da140fab3e3b67838efe5dd48)
尝试一下QQ采用这个虚拟摄像头的效果,
打开QQ系统设置,选择音视频通话,摄像头选择虚拟摄像头就可以预览到效果。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/13/96432975312ad85fbcafd9d67842a754)
如果发现预览会失败,会导致QQ崩溃。可以修改源文件。
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崩溃。可以修改源文件。
相关文章推荐
- win10系统中ASP.NET(VS2013)和MATLAB混编,调用MATLAB生成的.dll文件
- 系统多种资源文件代码示例(例如一个系统同时具有中文简体,中文繁体,英文,日文等不同资源文件)(示例代码下载)
- 生成/读取(反向更新数据库) Excel文件(示例代码下载)
- Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)
- ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载).NET技术
- 生成/读取(反向更新数据库) Excel文件(示例代码下载)
- ASP.NET 2.0 读取配置文件[INI](示例代码下载)
- Asp.net 2.0 用C# 创建 PDF文件[引用] (示例代码下载)
- Asp.net 2.0 装载XML文件中数据到Excel文件中(示例代码下载)
- Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)
- Asp.net 2.0 用C# 创建 PDF文件[引用] (示例代码下载)
- 用TreeView控件实现资源管理器(显示本地硬盘下所有文件夹和文件,并可以浏览图片)(示例代码下载)
- Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)
- ASP.NET 2.0 读取配置文件[INI](示例代码下载)
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
- ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)
- 系统多种资源文件代码示例(例如一个系统同时具有中文简体,中文繁体,英文,日文等不同资源文件)(示例代码下载)
- ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)