基于DirectShow的MFC视频播放器

开发背景:

基于64位win7旗舰版,vs2012 ultramate平台,使用MFC机制利用DirectShow开发包开发一款多媒体播发器,实现基本的播放控制功能。

开发步骤:

一、下载Microsoft SDKs

win7以后DirectShow已经脱离DirectX,而集成到C:\Program Files\Microsoft SDKs\Windows\v7.1,如果没有这个目录,则从微软官网下载整个Microsoft SDKs,

安装。

二、运行SDK下的sample例程,得到运行DirectShow所需要的头文件及库文件

运行C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses下的baseclasses.sln这是个vs2010工程,因此先升级为vs2012工程,

分别配置四种工程平台属性:Debug、Debug_MBCS、Release、Release_MBCS,生成四个库文件,用于后续开发时选择对应的.lib文件。

三、开发多媒体播放器Player时遇到的bug及sln

(1)文件名、变量重定义

bug:

配置DirectShow所需的头文件及库文件时遇到重复定义问题

sln:

我将所需的include及lib提出来,放到了Player工程下进行引用配置,避免了此问题。include文件包含上述的C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses,lib文件为quartz.lib strmbasd.lib strmbase.lib strmiids.lib Uuid.lib WinMM.lib。

(2)使用“在静态库中使用MFC”出现afx.h错误

bug:

配置为Release属性,选择“在静态库中使用MFC”出现错误

sln:

工程Player属性页->配置属性->c/c++->代码生成->运行库->多线程(/MT)

(3)使用IVideoWindow视频窗口接口进行全屏,退出全屏后黑屏

bug:

IVideoWindow->put_FullScreenMode()退出全屏后,视屏区黑屏,但有声音且媒体流在持续播放中

sln:

据说~是由于WIN7的桌面管理问题导致的,可以采用另外的VMR接口技术管理视屏区进行无窗口模式或者仿真全屏手段进行全屏

(4)抓图功能抓到的图不能粘贴至桌面

bug:

视屏播放中,添加了抓图功能,但抓到的图可以粘贴word中进行编辑,但不能粘贴到桌面

sln:

SetClipboardData()函数是将图片内容复制到剪贴板,而不是将图片文件复制到剪贴板,因此不能将图片内容粘贴到桌面






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值