最简单的transform的编写步骤(win10+vs2013)

来源:互联网 发布:网络十大丑男照片 编辑:程序博客网 时间:2024/06/10 11:06

最近项目要用到directshow的知识,开发一个transform filter,在网上搜到了一个《最简单的transform filter的编写步骤》的博客(点击打开链接)并下载了他的源代码(点击打开链接)进行调试学习。

由于下载的源码并非直接就可以运行的,有很多地方需要修改调试,现在简单的记录一下我在调试过程中遇到的问题及其解决方法:

1、streams.h头文件找不到


在自己电脑上搜索streams.h,并将搜索到的路径添加到项目属性->VC++目录->包含目录中


2、基类CTransformFilter、Unknow未定义的标识符


我找了一些已经编译好的库(strmbase.lib  strmbasd.lib  winmm.lib  quartz.lib),将它们添加至项目中

项目->项目属性->VC++目录->库目录:编译好的库所在的文件夹路径      项目属性->链接->输入->附加依赖项:将那几个库的名字添加进去)


项目->项目属性->通用属性 ->常规: 字符集:默认为“使用 Unicode 字符集”,设置为“未设置”

项目->项目属性->C/C++ ->语言: 将Wchar_t视为内置类型:默认为“”,设置为“否”

3、LINK : warning LNK4098: 默认库“LIBCMT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library


项目->项目属性->配置属性->链接器-> 命令行”在其它选项(D)中 添加:  /NODEFAULTLIB:"libcmt.lib"

(点击打开链接)


4、error LNK2026 模块对于 SAFESEH 映像是不安全的

项目->项目属性->配置属性->链接器-> 命令行” 在其它选项(D)中添加:/SAFESEH:NO

(点击打开链接)


5、warning LNK4070: .EXP 中的 /OUT:FlipFilter.ax 指令与输出文件名“C:\Users\futl\Desktop\FUTL\FlipFilter_success\Release\FlipFilter.dll”不同;忽略指令

项目->项目属性->通用属性->常规:目标文件扩展格式:改为“.ax”


所有warning和error都没有了之后,运行程序(ctrl+F5),会有如下结果:


不用管它,这时候在你的工程文件夹下已经生成了***.ax文件,现在只需将filter注册即可。

注册:

找到电脑中的cmd.exe文件,右键,以管理员身份打开:



有如下弹框提示则表示已成功:



接下来打开电脑中的graphedt.exe软件测试一下吧:


选中任意一个视频文件即可:


将自己开发的Flip Filter 添加进filter graph中:

(可以看到Flip Filter已经在Filter的列表中了)




点击运行即可得到所打开的视频上下翻转后的视频预览了。


之后的开发即可基于该filter开发工程,在其Transform()函数中进行相应的视频处理操作,再运行即可。(如果***.ax文件的路径没变的话,就不用再注册一遍了)


我的工程就是基于文中开头提到的博客(点击打开链接)中的项目改出来的。现将我的工程上传出来,以供大家参考:

点击打开链接



0 0