如何判断一个摄像头已经被使用啊?

lwg7603 2004-10-10 02:46:52
现在正在做一个视频聊天的东东,用微软的video capture api捕获视频数据(不用DirectX),现在发现一个问题,就是别的程序已经占用摄像头的时候,运行我的程序会弹出一个"视频源"的对话框,很烦,能不能在程序中判断出摄像头已经被占用啊,我看了所有API,没有找到方法,求各位帮我~~~~万分感谢!!!!!
...全文
625 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongchaomissyou 2004-11-10
  • 打赏
  • 举报
回复
自己写个测试摄像头的设备Filter能不能与特定Filter(比如Avi Decompressor)连接,如果不能连接表示已经被占用,能连接表示没有被占用,测试结束后把连接断开
zzan 2004-11-09
  • 打赏
  • 举报
回复
#include <streams.h>
#include <atlbase.h>

const GUID CLSID_NullRenderer =
{0xC1F400A4, 0x3F08, 0x11d3, 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37};


HRESULT TestCaptureConnected(IBaseFilter *pCapture)
{
#define JIF(op) if(FAILED(hr=op)) return hr

HRESULT hr;
CComPtr<IGraphBuilder> pGraph;
CComPtr<ICaptureGraphBuilder2> pBuilder;
CComPtr<IBaseFilter> pNullRenderer;

JIF(pBuilder.CoCreateInstance(CLSID_CaptureGraphBuilder2));
JIF(pGraph.CoCreateInstance(CLSID_FilterGraph));
JIF(pBuilder->SetFiltergraph(pGraph));
JIF(pNullRenderer.CoCreateInstance(CLSID_NullRenderer));
JIF(pGraph->AddFilter(pCapture, L"Capture"));
JIF(pGraph->AddFilter(pNullRenderer, L"Null Renderer"));

hr = pBuilder->RenderStream(NULL,
&MEDIATYPE_Video,
pCapture,
NULL,
pNullRenderer);

return hr;
}

return VFW_E_CANNOT_CONNECT means device occupied!
TRUE 2004-10-28
  • 打赏
  • 举报
回复
up
yyhzpk 2004-10-28
  • 打赏
  • 举报
回复
有没有调用设备的API函数,根据返回值判断是否被用
lwg7603 2004-10-19
  • 打赏
  • 举报
回复
To zzan(learner):
我是用VC的,能否提供VC代码~~
zzan 2004-10-12
  • 打赏
  • 举报
回复

没看清楚,楼主不用DirectX,瞎说了,惭愧!
zzan 2004-10-12
  • 打赏
  • 举报
回复
测试输出PIN能否连接就行了。


Create camera filter
get Capture pin
Create NullRenderer;
if(connect capture pin to NullRenderer() != S_OK){

return already connected;
}
httpaspjspphp 2004-10-12
  • 打赏
  • 举报
回复
我也遇到了这个问题,关注
eastsun 2004-10-11
  • 打赏
  • 举报
回复



up. 先。

gz.
clicksoft 2004-10-11
  • 打赏
  • 举报
回复
我也遇到了这个问题,关注
TRUE 2004-10-11
  • 打赏
  • 举报
回复
我也遇到了这个问题,关注

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧