首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DSPack:如何将PushSource连接到视频录像?

DSPack:如何将PushSource连接到视频录像?
EN

Stack Overflow用户
提问于 2012-04-15 20:14:18
回答 1查看 1.2K关注 0票数 0

我想使用PushSource过滤器来捕获,但我需要“连接”它到“视频”样本。这个过滤器不是一个独立的过滤器,所以它不能被枚举为捕获设备,我也不希望它像那样转换

EN

回答 1

Stack Overflow用户

发布于 2012-04-15 21:33:36

嗯,我使用的是GraphEdit中没有显示的Nvidia编码器过滤器。为此,我只需定义GUID:

代码语言:javascript
复制
Const
CLSID_NVIDIA_VideoEncoderFilter : TGUID = '{B63E31D0-87B5-477f-B224-4A35B6BECED6}';

然后我在内存中创建过滤器,如下所示:

代码语言:javascript
复制
Var
  N: IBaseFilter;
begin
  CoCreateInstance(CLSID_NVIDIA_VideoEncoderFilter, Nil, CLSCTX_INPROC_SERVER, IID_IBaseFilter, N);
  if Assigned(N) then
  Begin
  // connect to any filter that you can use in your system
  End;

现在你可以在你的GraphEdit中看到这个“隐藏”的过滤器了。

编辑:这是我链接过滤器的代码。它搜索可能连接到下一个滤波器的每个管脚。这段代码将音频输出引脚连接到音频输入引脚,视频输出引脚连接到视频输入引脚等。

代码语言:javascript
复制
Procedure Connect(Builder: IGraphBuilder; SourceFilter, DestFilter: IBaseFilter);
Var
  SourceEnum, DestEnum: IEnumPins;
  SourcePin, DestPin: IPin;
  FI: _FilterInfo;
  S, D: String;
Begin
  SourceFilter.QueryFilterInfo(FI);
  S := FI.achName;
  DestFilter.QueryFilterInfo(FI);
  D := FI.achName;
  SourceFilter.EnumPins(SourceEnum);
  DestFilter.EnumPins(DestEnum);
  DestEnum.Reset;
  While DestEnum.Next(1, DestPin, Nil) = S_OK Do
  Begin
    SourceEnum.Reset;
    While SourceEnum.Next(1, SourcePin, Nil) = S_OK Do
      If Builder.Connect(SourcePin, DestPin) = S_OK Then
      Begin
        SourceEnum := Nil;
        DestEnum := Nil;
        SourcePin := Nil;
        DestPin := Nil;
        Exit;
      End;
  End;
  SourceEnum := Nil;
  DestEnum := Nil;
  SourcePin := Nil;
  DestPin := Nil;
  Raise Exception.Create(Format('There is no pin from %s to connect to %d', [S, D]));
End;

现在您可以将此方法与您的过滤器一起使用,如以下代码所示

代码语言:javascript
复制
Var
  SourceFilter, DestFilter: IBaseFilter;
  Builder: IGraphBuilder;
Begin
  SourceFilter := SrcFilter As IBaseFilter;
  DestFilter := DstFilter As IBaseFilter;
  Builder := FilterGraph As IGraphBuilder;
  Connect(Builder, SourceFilter, DestFilter);
End;

希望这能有所帮助。我们曾经都是新手;)

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

https://stackoverflow.com/questions/10161920

复制
相关文章

相似问题

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