Directshow配置

directshow配置

1. 下载安装 DirectX 9.0 SDK Update (February 2005) Extras。

2. 配置IDE环境中的include, lib路径

  这步是为了以后更方便的做DSHOW开发, 不用每次对每个工程都添加路径。

  我的系统是32位win7+VS2010, 需要到C:\Users\chef\AppData\Local\Microsoft\MSBuild\v4.0(chef是我的用户名)目录下修改Microsoft.Cpp.Win32.user.props, 这是一个XML文件, 在节点IncludePath和LibraryPath分别添加上dshow sdk的include和lib路径就行了, 不同路径间用分号隔离。

3. 编译baseclass

  应该是对dshow的一个简单封装吧, 据说用它开发比较方便。

  到DirectX 9.0 SDK Update (February 2005) Extras\DirectShow\Samples\C++\DirectShow\BaseClasses下编译该工程。

  貌似会出现一些for循环内定义变量的作用域、static定义变量省略了int类型等小问题, 大家对照着错误提示修改一下就好了。 这里而外说一句, 开源的东西拿过来用往往都会出现一些问题, 这时不要心烦, 不要急着到处问人, 到处找人帮忙, 应该积累看错误、改错误的经验, 这也是初学者与有一定工作经验的程序员之间的一个显著区别吧。

4. 编译AMCap

  AMCap是一个通过摄像头采集视频并存成文件的工程, 位置在DirectX 9.0 SDK Update (February 2005) Extras\DirectShow\Samples\C++\DirectShow\Capture\AMCap。

  编译前先到项目属性的preprocessor definition中把WINVER、_WIN32_WINNT的值修改一下, 这两个宏定义标志你使用的系统型号及版本, windows SDK中会根据这两个宏决定你是否能使用一些函数, 我是改成0X0600了, 之后应该就能成功编译了。

5. 总结

  我学习DSHOW的目的是用来做摄像头视频采集的, 但无论是网上的一些代码示例还是SDK 中的example(例如就我看来最接近我目的的AMCap), 都是过于复杂、过度封装、功能不纯粹(当然这是对于我这个菜鸟来说拉), 我想要的不过是一个最简单的采集功能, 封成接口后简单配置一下调用start就返上来数据, 不需要界面、不需要播放、不需要存文件。 与其从这些工程中抽代码出来, 还不如看看dshow的东西。 在网上也找了一些资料, 最后发现还是SDK中所带的帮组文档directshow.chm最全也最清楚。 个人感觉一般SDK带的manual文档, 英文版的看起来都比较轻松(可能是都带着例子吧,如果是看RFC的英文版那真是越看越想哭), 仇恨英文的同学可以上网找中文版, dshow最常见的那份资料就是拉。

  directshow.chm的getting started的how to play a file中有一份完整的播放视频文件的源码, 有效代码也就10来行, 大家可以建个工程编译下试试(需要链接Strmiids.lib, Quartz.lib), 正好也可以测试一下IDE的环境变量是否设置成功(上面的AMCap是在项目属性中已经设置了dshow的inc、lib路径), 我用这段代码成功播放了一个wmv文件。 另外我调用CoInitialize初始化COM library失败了, 改用CoInitializeEx成功, 没有系统的学过COM知识, 粗略看了一下MSDN不知道是什么原因, 以后有需要再去看看COM知识吧。

  第一天的学习就到此结束吧, 对dshow兴趣比较浓厚的同学可以拿起SDK 中的example+chm啃了。。

  如果不懒的话, 我会把以摄像头采集为目的的后续学习发布上来的。

/---------------------------------------------------------------------\ * 书 名:《DirectShow开发指南》 * 作 者: 陆其明(著) 金邦飞(审校) * 内容提要: 本书以DirectX SDK 9.0版为蓝本,涉及的内容几乎涵盖了在Windows平台上使 用DirectShow进行C++编码的方方面面。全书共分4个部分。第1部分详细介绍了 DirectShow的基础知识。第2部分重点讨论了Filter的开发,以及DirectShow 应用程序的开发,包括目前非常流行的如音视频采集、数码摄像机的支持、非线性 编辑等应用。第3部深入分析了DirectShow SDK提供的部分典型源代码例子。第 4部分结合作者个人的一些开发实践,通过案例和开放源码分析,进一步介绍 DirectShow的实务应用。 本书完全忠实于DirectX SDK 9.0的帮助文档以及基类源代码,并结合作者多年 的实践,经过提炼而成。内容丰富,条理清晰,实用性强。适合广大的流媒体应用 开发人员,以及对Windows平台上多媒体处理感兴趣的编程爱好者、学生学习和参 考。 * 下载内容说明: readme.txt:本说明文件。 Chapter04:第4章用到的代码,其中AppIPTransform为MFC Filter的例子, DsDemo是一些演示代码,FilterTitleOverlay是字符叠加Filter的源代码。 Chapter05:第5章用到的代码,其中GraphBuilding为Filter Graph构建技术 的一些代码,SimplePlayer为一个简单的播放器例子。 Chapter07:第7章用到的代码,其中DsDemo是一些演示代码。 Chapter09:第9章用到的代码,其中DESCallback演示了控制DirectShow智能 连接的方法。 Chapter18:第18章用到的代码,其中MpegNetwork为“MPEG流的网络客户端播放” 实现的所有源代码(请打开Daisy.dsw浏览各项目)。 Chapter19:第19章用到的代码,其中DVD2AVI_1.77.3_SRC.zip为开放源码, FilterMpeg2VD为此开放源码基础上开发的MPEG-2 Video Decoder Filter例子。 除上述代码外,本书各章用到的其他代码均在DirectX SDK安装目录的Samples 子目录下可以找到。 * 备注: DirectX SDK 9.0以及DirectX 9.0运行时库可以到微的网站上下载。 请访问微的网站首页http://www.microsoft.com,然后输入DirectX进行搜 索;或者直接访问http://www.microsoft.com/directx下载运行时库,或者 http://www.microsoft.com/downloads/details.aspx?FamilyId=9216652F-51E0-402E-B7B5-FEB68D00F298&displaylang=en * 技术支持网站:http://hqtech.nease.net \---------------------------------------------------------------------/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值