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

时间:2017-04-14 20:37:23

标签: c# video filter directshow directshow.net

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

我将源滤镜添加到图形中,然后渲染图钉。这产生了与VMR的直接连接,并且它可以工作。 GraphEdit显示相机滤镜的输出引脚类型为RGB32

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

我尝试将Null Renderer连接到Smart Tee的预览图钉和Infinite Tee的第二个图钉,这没有任何区别。

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

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

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

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

1 个答案:

答案 0 :(得分:2)

可能的问题是尝试连接到视频渲染器涉及适合视频渲染器的媒体类型的重新协商。由于tee过滤器无法安排这样的媒体类型,它会尝试重新协商上游连接和/或提供转换过滤器,这最终会导致构建的流水线,但是一旦真正的视频开始通过,就会出现在某些格式或分辨率上不匹配,真正的视频帧会被丢弃。

问题可能是这个IP源过滤器特有的,因为在设计上它仅限于特定的解码器,并且它也在不知道实际的M-JPEG馈送的情况下进行初始化,期望在流式传输时解析格式。

以交互方式构建过滤器图表时,请务必查看介质类型并检查分辨率和像素格式是否有意义。在以编程方式构建图形时,还要确保按顺序构建管道,了解连接介质类型(在GraphStudioNext中,您可以按Ctrl + Shift + M以便每个连接提示您输入特定的介质类型),并且还要添加适配器过滤器必要时明确显示(三通输出不会连接到视频渲染器,因此请自行插入Color Space Converter或类似设备,而不要期望Intelligent Connect为您完成此操作)。

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

enter image description here

enter image description here