原创 DirectShow环境配置(VC6)

2009-7-3 18:35 3580 7 7 分类: 工程师职场
[转载]DirectShow环境配置(VC6)(1)

2009/03/14 01:32 P.M.


  1.简介:

  DirectShow 是一个windows平台上的流媒体框架,提供了高质量的多媒体流采集和回放功能。它支持多种多样的媒体文件格式,包括ASF、MPEG、AVI、MP3 和WAV文件,同时支持使用WDM驱动或早期的VFW驱动来进行多媒体流的采集。DirectShow整合了其它的DirectX技术,能自动地侦测并使 用可利用的音视频硬件加速,也能支持没有硬件加速的系统。


  2.环境安装:


  因为我系统比较多,所以我在三个系统上做了个简单的配置,我每套系统的配置都写下来,以方便读者自己参考:


  1.Windows XP x32下:(中文)


OS版本:Windows XP SP3 Professional


Windows SDK版本:Windows XP SP2 FULL


DirectX SDKDirectX 9.0 SDK Update - (Summer 2004)


  2.Windows Vista x64:(英文)


OS版本:Windows Vista x64 SP1 Ultimate


Windows SDK版本:Windows 2003 SP1 RTM


DirectX SDKDirectX 9.0 SDK Update - (Summer 2004)


  3.Windows Server 2008:(英文)


OS版本:Windows Server 2008 Enterprise Edition x32


Windows SDK版本:Windows SDK for Windows 2008 and .NET Framework 3.5 SP1


DirectX SDKDirectX 9.0 SDK Update - (Summer 2004)


  注:这里选择DirectX 9.0 SDK Update - (Summer 2004)的版本是因为这个版本是DirectX SDK中最后一个整合了DirectShow的版本,我个人觉得这个版本配置稍稍简单,其他版本我没有尝试过,应该问题不会太大。


  还有,开发平台都是VC6.0,这个平台我测试过,在Windows XPWindows VistaWindows Server 2008以及Windows 7下边都可以安装,只是有一点需要注意,在下边三个系统安装的时候需要注意一点:


  Windows VistaWindows 2008Windows 7


  在安装VC6.0的时候需要让你选择需要安装的组件,在选择安装组件的时候,有一个选项是“企业工具”


(英文“Enterprise Toos”),选中过后点击右边的“修改选项”或者“Change Option”,里面有一个项是:Visual Studio Analyzer,去掉这个选项就可以在这三个平台安装VC6.0了。当然一般不会有人在这三个系统安装VC6.0,但对于怀念这个平台的人可以试试,嘿嘿,仅作为参考。


  3.编译BaseClasses


  单独提取编译BaseClasses的章节,希望对所有编译BaseClasses的兄弟有帮助。


  1)首先打开VC6.0,新建一个项目,项目类型选择Win32 Static Library,这里需要说明一下,如果要使用VC6.0的来编译BaseClasses,因为该版本下边没有VC6.0的工程文件,所以最好自己创建工程文件,来完成编译过程,创建一个Win32 Static Library项目;


  2)设置相关参数:


  这里应该是不需要,为了保证编译好的Lib的名字和网上大部分配置相同,点击Project->Settings,在Library标签里面设置相关的输出,Output file name:默认是项目名称,本人是这样修改的:


  Debug版本:Debug\strmbasd.lib


  Release版本:Release\strmbase.lib


  然后就可以编译了!!兴奋中,期待的版本吻合的baseclasseslib快出来了。


  3)错误信息:


  别高兴太早,这里会有一个编译错误,错误信息如下:


  wxutil.cpp(277) : error C2065: 'COINIT_DISABLE_OLE1DDE' : undeclared identifier


  这个问题我搜了网上很多地方,后来发现了一个替代解决方案,变量未定义,但是有办法解决,找到源代码wxutil.cpp277行:


  hr = (*pCoInitializeEx)(0,COINIT_DISABLE_OLE1DDE );


  将变量COINIT_DISABLE_OLE1DDE改成整数4


  hr = (*pCoInitializeEx)(0,4);


  这样就可以编译通过了,在编译的时候记得编译两个版本,版本的切换在菜单Build->Set Active Configuration里面可以切换激活版本,就可以编译两个不同的版本到项目对应的目录下。然后把编译好的两个文件夹DebugRelease放到对应的BaseClasses文件夹下边:


  DirectX SDK安装目录\Samples\C++\DirectShow\BaseClasses下边就可以了。


  4.配置DirectShow针对所有项目的环境:


  因为有些头文件是Windows SDK下边的,所以建议最好装一个Windows SDK,否则缺少头文件会在Link过程报错。


  打开Tools->Option…->Directories里面:


  首先选择Include files


  DirectX SDK安装目录\Include


  DirectX SDK安装目录\Samples\C++\Common


  DirectX SDK安装目录\Samples\C++\DirectShow\BaseClasses


  Windows SDK安装目录\Include


  VS6.0 安装目录\VC98\INCLUDE


  VS6.0 安装目录\VC98\MFC\INCLUDE


  VS6.0 安装目录\VC98\ALT\INCLUDE


  然后选择Library files


  DirectX SDK安装目录\Lib


  DirectX SDK安装目录\Samples\C++\DirectShow\BaseClasses\Debug


  DirectX SDK安装目录\Samples\C++\DirectShow\BaseClasses\Release


  Windows SDK 安装目录\LIB


  VS6.0 安装目录\VC98\LIB


  VS6.0 安装目录\VC98\MFC\LIB


  网上很多文章都写了这段,但是我不清楚Debug版本和Release版本为什么都要放上去,索性就和他们一样放了两个版本的目录。


  注:顺序不能错,蓝色部分是原来就有的,红色是添加的,Include中第二项Common那个好像可以不需要,我只是一个个例,做参考,所以写上去。


  5.项目设置 


  创建一个项目过后,首先要引入项目所需要的库文件:


  选择Project->Settings->Link标签,然后在选项Object/library modules:中输入以下的几个Lib


  Debugstrmbasd.lib strmiids.lib quartz.lib


  Releasestrmbase.lib strmiids.lib quartz.lib


  注:网上参考资料如果要引用头文件streams.h才需要BaseClasses相关内容,如果不引用不需要前面两个库,我没有验证过,而且如果引入头文件streams.h,还需要另外两个库uuid.libwinmm.lib,我的基本配置:strmbasd.lib strmiids.lib quartz.lib uuid.lib winmm.lib几个库文件


  然后随便找个例子试试,我使用的例子是一个采集摄像头视频数据的例子,如果编译通过可以运行就证明环境没有问题

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /2 下一条