周 三老板说,你现在有时间,帮他们做一下视频这块的东西...紧接着我就忙碌开了
一开始同事给了我ffdshow的源代码,拿到这玩意儿我还不知道该干啥,打开vs2005,先编译下吧。一编译刷刷地一堆error就出现了,没办法,上网找解决方法,按照提示,又是下DirectX SDK,又是下Windows SDK,还得下nasm.exe 和 yasm.exe。参考《重新編譯 ffdshow 最簡單的方法[C++]》。
装完之后编译,pass,心想终于解决个问题了。
但是接下来又开始郁闷了,不知道怎么用,对视频开发方面的了解几乎等于0。只能继续开始找资料,问问题。网上搜罗了一圈,终于得知很多是用DirectX中的DirectShow做的。但是翻遍DirectX SDK的目录也没找到DirectShow的东西,原来下错版本:)了。继续开始折腾,总结发现前前后后下了n个SDK:
Windows SDK:
1, Windows SDK for Windows XP SP2
2, Windows SDK for Windows Server 2003 SP1
3, Windows SDK for Windows Server 2008 and .Net Framework 3.5
DirectX SDK:
1, dxsdk_dec2004 & dxsdk_oct2004_extras
2, dxsdk_aug2005 & dxsdk_feb2005_extras
3, DXSDK_Nov08
经过这么一折腾,也逐渐对Windows SDK和DirectX SDK有了些了解, DirectX SDK中的DirectShow列子被移到Windows SDK中了,这个有点不理解,为什么要移到Windows SDK中?
经过挑选,开发环境和SDK选为:VS2008,DXSDK_Nov08,Windows SDK for Windows Server 2008 and .Net Framework 3.5,基本上都用了最新版本。
第一把手,挑选了SDK Samples中的amcap程序,编译的时候也还是碰到问题了。
1,没能找到strmbasd.lib,找到的解决方法就是自己编译DirectShow/BaseClasses,生成strmbasd.lib。
2,开始编译amcap,又碰到问题,一大堆的link问题:LNK2019 和 LNK2001,修改工程中的“Character Set”和“Treat wchar_t as Built-In type”即可,但要注意需同时修改BaseClasses和amcap工程中的这两个参数,分别修改为“Use Unicode Character Set”和“YES”。参考《Getting the DirectShow AmCap sample to compile》。
问题顺利解决,启动,顺利调出摄像头图像!
下一步继续学习。
推荐heliang1108 写的视频的基础知识,对我这样的菜鸟级初学者还是很有用的。