vs2008下DirectShow的配置详解

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

最近需要开发一个流媒体播放器,决定基于dshow来做。

 

以前用vc6.0开发过,所以相关配置有现成的资料可以参考。现在开发环境换成vs2008了,好些不一样的地方。比如,在比较老的资料里可以知道:directshow是包含在directx SDK里面的。但这是在DirectX 9.0b之前的情况,在9.0c以后,directshow和DirectX就彻底分家了,directshow被移到了windows platform sdk里。如果你只安装了DirectX9.0b之后的版本,是没有directshow的。

 

1、安装工具:vs2008+DirectX 9.0 SDK

2、我的安装目录是C:/DXSDK

3、找到C:/DXSDK/Samples/C++/DirectShow/BaseClasses下的baseclasses.sln,打开后可能会提示转换,注意留下备份。编译通过后会生成strmbasd.lib,在debug或者release目录下(取决于你程序生成的版本)。

 

注意点:编译中遇到的问题及解决方法:

      3.1若定位错误到如下两行:

typedef void *PVOID;

typedef void * POINTER_64 PVOID64;

则修改为:

#define POINTER_64 __ptr64 //加上这一行

typedef void *PVOID;

typedef void * POINTER_64 PVOID64;

3.2 若for循环中变量作用域出现问题,则如下修改:

C++标准语法的问题,因为在之前在for循环内定义的变量可以在for之外的地方使用,即在第一个for里for(int i,...),以后的for再使用i不必再声明,解决方法也很简单,打开project->BaseClasses properties->configuration->C/C++->Language->Force Comformance in For Loop Scrope设置为No即可

3.3 再次编译,若还有其他问题,则做如下修改

打开project->BaseClasses properties->configuration->C/C++ ->Command Line,增加/wd4430选项

 

4、配置工作环境

4.1 1. 首先,点击工具->选项->项目和解决方案->VC++目录。如图添加两个引用:

 

C:/DXSDK/Samples/C++/DirectShow/BaseClasses

C:/DXSDK/Include

包含文件设置 

4.2 2. 如图,再添加库文件的引用。

C:/DXSDK/Samples/C++/DirectShow/BaseClasses/Debug

C:/DXSDK/Lib

 库文件设置

 

4.1步与4.2步注意点:

请将C:/DXSDK替换为你安装directX所在的目录。且我们所添加的路径最好位于最上端,若开发环境中原来有SDK路径,则去掉开发环境中原来的windows SDK路径

5、新建一基于对话框的MFC程序DirectShowEx,建成后点项目->属性->连接器 ->命令行,在附加选项中输入strmbasd.lib

 

6、在directShowEx.h中添加

#include <dshow.h>
#include <streams.h>

 

将对话框初始化函数OnInitDialog()中的内容替代如下:

CDialog::OnInitDialog();

 // Add "About..." menu item to system menu.

 // IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

 CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
  pSysMenu->AppendMenu(MF_SEPARATOR);
  pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

 // Set the icon for this dialog.  The framework does this automatically
//  when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE);   // Set big icon
SetIcon(m_hIcon, FALSE);  // Set small icon

// TODO: Add extra initialization here
IGraphBuilder *pGraph = NULL;
   IMediaControl *pControl = NULL;
   IMediaEvent *pEvent = NULL;

   HRESULT hr = CoInitialize(NULL);
   if(FAILED(hr))
   {
       printf("can't coinitizlize");
       return -1;
   };
   hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void**)&pGraph);
   if(FAILED(hr))
   {
       printf("can't create filtergraph");
       return -1;
   }

   hr = pGraph->QueryInterface(IID_IMediaControl, (void**)&pControl);
   hr = pGraph->QueryInterface(IID_IMediaEvent, (void**)&pEvent);

hr = pGraph->RenderFile(L"F://lx.avi", NULL);//找个自己电脑上的视频文件即可


   if(FAILED(hr))
   {
       printf("cant't renderfile");
       return -1;
   }
   hr = pControl->Run();
   if(FAILED(hr))
   {
       printf("can't run");
       return -1;
   }
   long evCode;
   pEvent->WaitForCompletion(INFINITE, &evCode);



   pControl->Release();
   pEvent->Release();
   pControl->Release();
   CoUninitialize();
   printf("Hello World!/n");
   return 0;

 return TRUE;  // return TRUE  unless you set the focus to a control

 

 

Ctrl+F5编译运行,一切OK~~~

在VisualStudio2008中打开VisualStudio其他版本的项目 前言: 由于项目需要使用低版本VisualStudio2008进行开发以保证稳定性,就遇到了降版本的问题。当我们使用高版本打开低版本的项目是,VisualStudio会自动转换版本号以兼容项目,但是我们往低版本走的时候就需要自己手动修改了,今天小编给大家分享一下如何在低版本中打开高版本vs 解决方法: 1.修改项目解决方案(.sln文件)             将Visual Stud... 阅读详情

相关推荐

VS2008DirectShow的安装与使用

在使用opencv编程的过程中,发现使用cvCapture读取视频时,我用的维视相机只能读出黑白色的图像,但是用usb接口的摄像头还是能够正常读出彩色的图像。让人相当的郁闷哈!!!      经过各方面的查找,发现在使用opencv的项目中增加DirectShow能够让维视相机采集到彩色的视频。下面是在VS2008+Opencv中配置DirectShow的步骤:   1.将CameraDS.h

jiangzhaopu的专栏 1131

vs2008配置安装Directshow的详细教程

本人于2011年1月13日终于在不断的尝试中总结出了在vs2008配置directshow开发环境的流程 具体的操作流程说的很喜 初接触过vs2008的初学者可以看懂

VC日志类调试信息输出

功能:输出日志信息logfile.h VC日志类调试信息输出,是编程调式跟踪流程的日志输出好帮手,很有助于程序的排错调试.1,使用简单方便.只有一个头文件logfile.h include后,直接调用函数即可2,VC6,VC7(VS系列,VS2008) 兼容VC版本3,可输出文件名及行号4,支持多线程应用 Debug版本宏1 设置控制台宏2 设置文件名宏3 设置等级宏4

VS2008+OPECV3.0.0+DirectShow 配置方法

DirectShow配置方法 1.获得完整的DirectShow文件夹,放在OpenCV的根目录下(其实别的地方也可以,随意) 2.把DirectShow/include下的CameraDS.h,CameraDS.cpp文件拷在当前需要配置的工程目录下,并在项目中包含 3.在当前项目的 项目/属性对话框中 配置属性-C/C++ - 常规-附加包含目录中包含../DirectShow/incl

史丹利复合田的博客 1386

关于VC7(VS2003),VC8(VS2005),VC9(VS2008)中的增量连接相关功能

VS的有.net版本 以后增加了可以在调试过程中动态改变逻辑代码的功能,也就是/EDITANDCONTINUE。这个功能的原理在于调试时将所有函数的起始地址放到一个ILT(incremental link table)内存中,这样每个函数修改时不会影响到其它函数的地址或者说影响的机会很小。可以做实验,默认情况,VS写一个简单的C++程序,添加一个全局函数,然后用printf打印函数地址,再用

Fyter's BLog 2447

DirectShow VS2008开发环境搭建

http://blog.csdn.net/ym012/article/details/7231993 四年前开发其它项目时搭建过环境,但是现在早忘了,又是又要麻烦了下gg姐姐和百度娘,现在把过程记一下,以后只麻烦自己就可以了。 1,下载SDK 下载:directx sdk 文件名:DXSDK_Jun10.exe   下载:DirectShow Extra (为什么要这个,请看最

zww_sap111的专栏 1082

VS2008 配置 Directshow

VS2008 编译DirectShow 是比较简单的,比VS2005容易,不需要修改文件。我下载了 “DXSDK_Jun08.exe”08年7月的DirectX SDK 和 Windows For Vista 的 SDK 在这个版本中 由Directshow,“ 6.1.6000.16384.10.WindowsSDK_Vista_Feb2007Update_rtm.DVD.Rel.iso

4275

vs2005、vs2008配置DirectShow详解

vs2005、vs2008配置DirectShow详解<br />1、注意点(版本问题):在比较老的资料里可以知道:directshow是包含在directx SDK里面的。这里要强调一点,这是在DirectX 9.0b之前的情况,在9.0c以后,directshow和DirectX就彻底分家了,directshow被移到了windows platform sdk里。如果你只安装了DirectX9.0b之后的版本,是没有directshow的。<br />2、我的安装目录是:C:/DXSDK<br />3、

adropofsnow的专栏 737

vs2008DirectShow配置

Hi heller, vs2008DirectShow配置: 1、安装工具:vs2008+DirectX 9.0 SDK 2、假设安装目录是C:\DXSDK 3、找到C:\DXSDK\Samples\C++\DirectShow\BaseClasses下的baseclasses.sln,打开后可能会提示转换,注意留下备份。编译通过后会生成strmbasd.lib

u013736471的专栏 538

vs2008配置DirectShow

2009年10月16日   在前段时间,我写了一个关于DirectShowVS2008中使用的文章。当然,我当时使用的是在vs2008 中自带的 WinSDK6.0a,而没有用CCameraDS中带有的DirectShow。问题是解决了,但有一点比较麻烦的,是要修改 WinSDK6.0a中的qedit.h,   引用:   DirectShowvs2008 Vista中的使用   再修改qedit.h 中引用 dxtrans.h 的部分,要求注释掉   #inclu

th0624的专栏 3995

VS2008下安装与配置DirectShow SDK 9.0 及 DirectShow AMCap改装的问题

一、安装DirectShow。 我装的是DirectShow SDK 9.0b。安装程序名为DXSDK_Jun10.exe。 下载地址:https://pan.baidu.com/s/1kURma3t 下载地址:https://pan.baidu.com/s/1slfmSMD         二、准备需要的静态链接库。 需要的静态链接库有strmiids.li...

weixin_33725515的博客 397

vs2008directshow配置

近来由于要做一个流媒体播放器,调研后决定在directshow的框架下做。   在比较老的资料里可以知道:directshow是包含在directx SDK里面的。这里要强调一点,这是在DirectX 9.0b之前的情况,在9.0c以后,directshow和DirectX就彻底分家了,directshow被移到了windows platform sdk里。如果你只安装了DirectX9.0

chenqi0623的专栏 497

帮您安装调试成功VS2008平台下的Directshow 及基于directshow的相关项目基础配置错误解决

转载网址:http://wenku.baidu.com/view/f1f33c16c5da50e2524d7fa8.html 知识普及: DirectX9.0b(包含b)以下版本才有directshow,自从DirectX9.0c以后就从DirctX中分离了directshow了,所以要用directshow的人要注意,当然你也可以下载安装extras扩展包来弥补这一缺省。

mysteryrat的专栏 1079

VS2005/VS2008环境中配置DirectShow

1. 安装工具 visual studio 2005 和 DirectX 9.0 SDK 2. 设置编译环境:   编译时错误解决方法:    winnt.h(222) : error C2146: syntax error : missing ';' before identifier 'PVOID64'    winnt.h(222) : e

haoxihuan的专栏 926
上一篇: 【转】.NET Framework无法重新安装
下一篇: 没有找到DllRegisterServer输入点
Amy_1007
博客等级 码龄17年 44粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值