千家信息网

在vs2008+Vista中DirectShow的用法

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"在vs2008+Vista中DirectShow的用法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"在vs2008+Vista中D
千家信息网最后更新 2026年11月02日在vs2008+Vista中DirectShow的用法

这篇文章主要讲解了"在vs2008+Vista中DirectShow的用法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"在vs2008+Vista中DirectShow的用法"吧!

最近想用OpenCV库进行视频处理,但十分不幸的是新买的笔记本装的是Vista,对网络摄像机只能用DirectShow*方式控制,而不能用在XP里还能使用的vfw方式,而大多数OpenCV的例程都用vfw方式实现的,得自己去转变成 DirectShow的方式。当然了,DirectShow 也将要被Media Foundationt淘汰了。但分析一下,在XP/ Vista/ Windows7 时代还是会被保留的。

DirectShow在DirectX9.0b之前都包括在这个库中,在DX9.0c开始,则被独立成库,要另外安装**。(注,在XP(sp2)中默认安装了DX9.0c而Vista默认安装了DX10。)后来MS又把DirectShow放入了WindowsSDK中。在vs2008 中的 WinSDK6.0a 已经包含了DirectShow,但在vs2005中的WinSDK则没有。

由于懒得重装XP系统,所以就直接给本本装了个vs2008,尝试使用DirectShow。在http://www.opencv.org.cn/index.php/%E4%BD%BF%E7%94%A8DirectShow%E9%87%87%E9%9B%86%E5%9B%BE%E5%83%8F 中下载了个例程,解压,打开工程文件,F5直接编译,接着~~~~

碰到了经典的 error C2146: syntax error : missing ';' before identifier 'PVOID64' 错误。上网查了好久,终于明白就是库连接有问题,找不到相应的.h文件,解决方法就是装DX(和DS),和改头文件连接路径。看了看,项目的目录,发现,在Debug目录下已经有个叫DirectShow的目录,里面已经包含了相关的头文件和库文件了。而vs2008已经把WinSDK安装好了,就是说DS也已经安装好了。但是由于原配的DirectShow目录中的文件是针对DX9的DS,而实际Vista中安装的是DX10和WinSDK6.0a,所以编译出错。
因此,在Project->Settings->Settings for:(All configurations)的C/C++和Link中,把所有的DirectShow/Include,变成 $(FrameworkSDKDir)Include;把所有的DirectShow/Lib,变成 $(FrameworkSDKDir)Lib。
改动的有:
...C/C++->Common->Additional include directories
...Link->Common->Additional library directories

检查编译命令,看看是否已经包括新的目录。

F5,再次编译。

还是告诉在...\DirectShow\Include\dxtrans.h 头文件中,不能打开d3d.h。在次看看d3d.h 在啊,但认真看看只是在原配的DirectShow目录中,而新的WinSDK6.0a没有,那这么办???
咦~~~!怎么还是在原来的DirectShow目录找dxtrans.h,看看文件CameraDS.h:
#include
#include "DirectShow/Include/qedit.h"
#include "DirectShow/Include/dshow.h"
#include
#include

啊,得把引用 "DirectShow/Include/qedit.h" 改成 ,把引用 "DirectShow/Include/dshow.h" 改成 。 存盘后,编译,再次出现错误:

1>CameraDS.cpp
1>c:\program files\microsoft sdks\windows\v6.0a\include\qedit.h(498) : fatal error C1083: File (Include) can not open: "dxtrans.h": No such file or directory

一查看,没在WinSDK的目录上找到dxtrans.h,上网一查,新的DS不在包含这个文件。上网找到了解决方案。
http://www.cnblogs.com/pcmax/archive/2008/11/22/1338989.html
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2617687&SiteID=1

现在采用的是第二种方法:

在调用 包含qedit.h 的命令前加入四句:
#define __IDxtCompositor_INTERFACE_DEFINED__ 再修改qedit.h 中引用 dxtrans.h 的部分,要求注释掉
#include "oaidl.h"
#include "ocidl.h"
//#include "dxtrans.h"
#include "amstream.h"

再编译运行,成功!! 选择设置摄像头,视频显示,点击q键,退出。

感谢各位的阅读,以上就是"在vs2008+Vista中DirectShow的用法"的内容了,经过本文的学习后,相信大家对在vs2008+Vista中DirectShow的用法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

文件 目录 编译 就是 方式 还是 学习 内容 再次 原配 命令 方法 视频 错误 问题 装好 摄像 成功 不幸 个例 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 河南云网互联网络科技有限公司 为想互联网科技怎么样 科技互联网企业 科技与互联网 海南购全球互联网科技 华中科技有哪些互联网大佬 深圳市运趣互联网科技有限公司 互联网科技实习生岗位职责 贵州叶脉互联网科技有限公司所属行业 荆州市昕露互联网络科技有限公司 青海科技产业互联网发展 中国科技创新与世界互联网大会 996高科技互联网公司 允成互联网科技有限公司融资 佛山市翊博互联网络科技有限公司 广州百诚互联网科技有限公司官网 互联网安防科技感 本届互联网大会上的黑科技 工业互联网科技创业 花魁咖啡 湖北九亚互联网络科技有限公司 金融科技与互联网金融 南京欣网互联网科技 宁波青枫互联网科技有限公司 电子科技大学互联网创业大赛 深圳育鹏互联网科技有限公司招聘 华夏恒生互联网科技013171 互联网科技创业计划的风险分析 现代科技的标志之一的互联网
0