仍有针脚捕获问题,
我们有一个基本的视频和图片捕获项目,从捕获引脚捕获图像和视频是可以的,但是一旦我尝试连接仍然pin(FindPin成功找到)到samplegrabber,它失败了hresult = E_FAIL / Unspecified失败/ 0x80004005的,
alrorythm的步骤如下(用delphi编写,我删除了变量的名称):
初始化界面,成功搜索设备,添加视频捕获过滤器;
FindPin('捕获过滤器',//过滤器。 PINDIR_OUTPUT,//寻找输出引脚。 @PIN_CATEGORY_STILL,//引脚类别。 无,//媒体类型(不在乎)。 False,// Pin必须未连接。 0,//获取0&#39引脚。 '仍然销售' //接收指针的指针。 ); 这个程序成功找到了引脚;
CoCreateInstance(CLSID_SampleGrabber,NIL,CLSCTX_INPROC_SERVER, IID_IBaseFilter,'样本抓取器过滤器'); 成功的;
'示例抓取器过滤器' .QueryInterface(IID_ISampleGrabber, ' isamplegrabber object'); 成功的;
'图表生成器' .AddFilter (VCOISampleGrabFilter,' Sample Grabber'); 成功的;
CoCreateInstance(CLSID_NullRenderer,NIL,CLSCTX_INPROC_SERVER, IID_IBaseFilter,' null渲染器过滤器'); 成功的;
'图表生成器' .AddFilter (VCONullRendererFilter,' Null Renderer'); 成功的;
' isamplegrabber object' .SetBufferSamples(True); ' isamplegrabber object' .SetOneShot(False); 成功的;
'图表构建器2' .RenderStream (@PIN_CATEGORY_STILL,@ MEDIATYPE_Video,'视频捕捉滤镜', '示例抓取器过滤器',' null渲染器过滤器'); 有失败的地方, 在这个alrotythm之后,如果我看一下图表(已经为此编写了程序),它看起来只有3个未连接的过滤器;
没有对样本采集器使用回调函数,只是使用GetCurrentBuffer获取镜头,
实际上,这个algorythm(仅用于捕获引脚)可以正常工作,
algorythm来自http://msdn.microsoft.com/ru-ru/library/windows/desktop/dd318622%28v=vs.85%29.aspx,
还试过RenderStream的另一个参数,发生同样的错误,
还尝试使用'图形构建器' .Connect功能和2个finded引脚(out-still,in-samplegrabber),它也失败了,
有没有人经历过同样的事情?这很奇怪,我第一眼就认为将PIN_CATEGORY_CAPTURE更改为PIN_CATEGORY_STILL就足够了,这样就可以了,
相机100%有工作静止引脚(它正在与其他程序一起工作),
我正在重写微软的AmCap,现在尝试使用它,但不幸的是,它尚未完成,
感谢, 伊戈尔。
答案 0 :(得分:0)
RenderStream
是一种包装方法,[据说很容易]将各种东西连接成可行的状态。不幸的是,这个价格缺乏细节。您有兴趣使用IGraphBuilder.Connect
直接连接引脚,并将故障隔离到特定的图形构建步骤。
答案 1 :(得分:0)
找到了解决这个问题的方法,也许有人会觉得这很有帮助:你应该首先渲染一个渲染器,然后是一个samplegrabber:)