首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不显示在TVideoWindow上的情况下使用Delphi/DSPack捕获帧?

如何在不显示在TVideoWindow上的情况下使用Delphi/DSPack捕获帧?
EN

Stack Overflow用户
提问于 2012-10-01 20:31:07
回答 1查看 4.8K关注 0票数 3

DSpack有用于播放DirectShow兼容的视频设备和同时捕获视频帧的示例代码。TVideoWindow附加到FilterGraph上以显示视频(第一图-1)。如果删除TVideoWindow,操作系统将自动打开ActiveMovie并将视频显示在单独的窗口上(图2)。

有没有一种方法可以使用DSPack来捕获视频帧而不使用任何GUI组件并且不显示视频?

DSPack论坛提到了NullRenderer过滤器,但是没有关于如何使用它的文档或示例。看起来我们可以实现这一点,如果我们手动替换视频渲染器在GraphEdit中直接呈现(图3)。

如何通过在代码中执行所有操作来实现图3所示的结果?DSPack没有解释如何创建一个空渲染器。

代码语言:javascript
复制
Figure-1: The graph of the default example code

代码语言:javascript
复制
Figure-2: Shows what happens if I remove the TVideoWindow

代码语言:javascript
复制
Figure-3: Shows what happens if I replace Video Renderer with a 
         Null Renderer and manually connect them in the GraphEdit. 

,这就是我(到目前为止)做的

ReassignSampleGrabberOutput之前调用以下filterGraph.Play;

代码语言:javascript
复制
procedure TForm1.ReassignSampleGrabberOutput;
var
  nullRenderer : IBaseFilter;
  nullRendererPins: IEnumPins;
  nullRendererPin : IPin;
  graph:   IGraphBuilder;
begin

  nullRenderer := CreateComObject(CLSID_NullRenderer) as IBaseFilter;
  FilterGraph1.QueryInterface(IID_IGraphBuilder, graph);
  graph.AddFilter(nullRenderer, 'Null Renderer');

  nullRenderer.EnumPins(nullRendererPins);

  nullRendererPins.Reset;

  if nullRendererPins.Next(1, nullRendererPin, nil) = S_OK then
  begin
    //SampleGrabber1.OutPutPin.Disconnect;
    //SampleGrabber1.OutPutPin.Connect(nullRendererPin, nil);

    graph.Disconnect(SampleGrabber1.OutPutPin);
    graph.FindFilterByName('Video Renderer', filter);
    graph.RemoveFilter(filter);
    graph.Connect(SampleGrabber1.OutPutPin, nullRendererPin);

  end;
end;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-01 20:35:43

Null Renderer Filter是一个标准的过滤器/类。在代码中,只需实例化它(CoCreateInstance),将其添加到图中,并将其输入引脚连接到示例Grabber的未连接输出引脚。

在Delphi/DSPack中,应该是这样的:

Renderer := CreateComObject(CLSID_NullRenderer) as IBaseFilter;

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12680600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档