• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 在用DirectShow做摄像机的程序,遇到一些问题请高手帮忙看看。

在用DirectShow做摄像机的程序,遇到一些问题请高手帮忙看看。

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了directshow摄像头,directshow打开摄像头,directshow采集摄像头,在用的研究及检验程序,在用等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 在用DirectShow做摄像机的程序,遇到一些问题请高手帮忙看看。
描述:

1、关于RegisterDeviceNotification这个函数,包含了windows.h头文件,仍然编译失败,总说是undeclared identifier。
2、程序在debug时,有一些信息看不懂。不明白是什么意思,哪里出了错。
1)kswdmcap.ax(tid 25c) 278 : CVideo1DataTypeHandler, DEST SIZE FAILED
2)Direct3D8: (ERROR) :Motion comp interface not supported
3)ksproxy.ax(tid 278) 12967 : StreamSegment 003cf820 failed
4)The thread 0x488 has exited with code -2147024637 (0x80070103).
3)关闭摄像机后,会收到WM_GRAPHNOTIFY消息,处理函数如下:
// .H file
CComPtr<IGraphBuilder> m_pGraph;
CComPtr<ISampleGrabber> m_pGrabber;
CComPtr<IBaseFilter> m_pDeviceFilter;
// .CPP file
CComQIPtr<IMediaControl, &IID_IMediaControl> pCtrl = m_pGraph;
if (pCtrl) 
    pCtrl->Stop();
CComQIPtr<IVideoWindow, &IID_IVideoWindow> pWnd = m_pGraph;
if (pWnd)
{
    pWnd->put_Visible(OAFALSE);
    pWnd->put_Owner(NULL);
}
CComQIPtr<IMediaEventEx, &IID_IMediaEventEx> pEvent = m_pGraph;
pEvent->SetNotifyWindow(NULL, 0, 0);
SAFE_RELEASE(m_pGrabber);
SAFE_RELEASE(m_pDeviceFilter);
SAFE_RELEASE(m_pGraph);
运行时,到stop()就出错了,出错信息是“SUCCEEDED(hr) At line 2520 of d:\xpclient\multimedia\dshow\filters\core\filgraph\filgraph\filgraph.cpp”。如果注释掉pCtrl->Stop(),则到最后也会出错,出错信息是“0 At line 10178 of d:\xpclient\multimedia\dshow\filter.ks\ksproxy\ksutil.cpp”。通过Context可以看到是停在了
~CComQIPtr()
{
if (p)
-> p->Release();
}
这是什么原因呢?要怎么解决?


解决方案1:

你用的是vc6吧,这个note的意思是说当你用的头文件发布时,nt5.0和windows98beta版本是当前的版本,你只能编译beta版本或测试版本的程序,我估计是的vc或者是platform sdk版本太老了,下载一个新的platform sdk或者用vc.net吧。

解决方案2:

呵呵,
改成
#undef WINVER
#define WINVER 0x0500
或者在stdafx.h中
如果是
#ifndef WINVER // 允许使用 Windows 95 和 Windows NT 4 或更高版本的特定功能。
#define WINVER 0x0400 //为 Windows 2000 及更新版本改变为适当的值。
#endif
则把WINVER 改成0x0500啊
还有你的智能指针怎么没有调用CoCreateInstance

解决方案3:

再包含windows.h头文件前,定义(改变)一下windows的版本。默认的0x400是不行的。
职能指针不熟悉,没有建议。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于DirectShow控制摄像头的一点小问题
  • 如何用DirectShow驱动摄像头?????
  • Directshow摄像头如何断开连接?
  • DirectShow采集摄像头图像为AVI文件但是用播放器无法播放这个AVI文件
  • Directshow如何在摄像头视屏和媒体播放视屏间自由切换?
  • DirectShow预览摄像头问题
  • 用Directshow能实现对四个USB摄像头同步进行采集图像吗
  • 在用DirectShow做摄像机的程序,遇到一些问题请高手帮忙看看。
  • 调用directshow控件包含几个头文件出错,为什么啊?

相关文章

  • 2017-06-04 怎么设置Excel单元格颜色呀
  • 2017-06-04 怎么实现IOleCommandTarget接口
  • 2017-06-05 PE文件重定位表的问题
  • 2017-06-04 Invoke如何去调用有参数的函数
  • 2017-06-04 MFCactiveX控件baseon“msctls_progress32”的问题,急。
  • 2017-06-05 从哪里添加IEdBoxEditor啊?
  • 2017-06-04 急求:请问如何导出execl中的数据到一个变量里??
  • 2017-06-05 简单的DLL问题
  • 2017-06-05 请教大家如何使程序在windows关闭时调用某个程序
  • 2017-06-05 线程到底拥有些什么资源?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 为什么在win2000server上不能注册DLL???
    • dll编程成功但注册失败!
    • 谁有DLL的原码
    • 关于单对象,多接口的问题
    • ATL组件编译成ReleaseMiniDependency版本在中文目录下不能注册。
    • 调用COM组件接口函数时出现运行错误
    • 用CreateThread()创建的线程怎样关闭?
    • 急急!COM组件实例化时出错
    • 如何在VC中实现BSTR与CString之间的转换?求助!
    • 请问为什么注册失败?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有