c# directshow.net tee 过滤器渲染失败

c# directshow.net tee filter render fails

我正在尝试将 Alax.Info IP camera source filter 连接到捕获和预览渲染器。

我将源筛选器添加到图表中,并渲染图钉。这会产生与 VMR 的直接连接,并且可以正常工作。 GraphEdit表示camera filter的输出pin类型是RGB32.

当我将相机源滤镜的输出连接到 T 形(Smart Tee 滤镜或 Infinite Tee 滤镜)时,渲染 T 形的输出会导致 AVI Decompressor 过滤器插入三通和 VMR 之间。在 MS GraphEdit 应用程序中,我得到了一帧视频,仅此而已。在 GraphEditPlus 中,我只得到一个黑色渲染 window。

我试过将 Null Renderer 连接到 Smart Tee 的预览引脚和 Infinite Tee 的第二个引脚,这没有区别。

当相机滤镜连接到 T 恤时,GraphEdit 报告其输出引脚类型已更改为 YUY2, 16 bits。我强烈怀疑这是问题的根源。

是否有我可以查看的日志来弄清楚发生了什么?

在这些 "tool" 应用程序中有没有办法控制相机的输出引脚类型,从而控制下游过滤器的选择?

我是否应该使用需要 RGB32 视频的其他类型的 T 型过滤器?

可能的问题是尝试连接到视频渲染器涉及重新协商适合视频渲染器的媒体类型。由于 tee 过滤器无法安排此类媒体类型,它会尝试重新协商上游连接 and/or 提供一个转换过滤器,最终会导致构建的管道,看起来,但一旦真正的视频开始通过那里某些格式或分辨率不匹配,真实视频帧在途中丢失。

问题可能特定于此 IP 源过滤器,因为根据设计,它仅限于特定的解码器,并且它还在不知道实际 M-JPEG 提要的情况下进行初始化,期望在流式传输时解析格式。

以交互方式构建过滤器图时,请务必检查媒体类型并检查分辨率和像素格式是否有意义。以编程方式构建图形时,还要确保按顺序构建知道连接媒体类型的管道(在 GraphStudioNext 中,您可以按 Ctrl+Shift+M,这样每个连接都会提示您使用特定的媒体类型),并且您还想添加适配器过滤器必要时显式(tee 输出不会连接到视频渲染器,因此请自行插入 Color Space Converter 或类似工具,不要指望 Intelligent Connect 会为您完成)。

当引脚连接属性匹配时,视频通过,例如: