我有一个网络摄像头,我想在不停止渲染器的情况下开始/停止视频录制。这就是我想使用GMFBridge的原因。我的图表是:
Webcam -> FFDShow -> SampleGrabber -> Infinite Tee -> Color Converter -> Renderer
|---> GMFBridge Sink Filter
GMFBridge Source Filter -> Color Space Converter -> Encoder -> File Writer
我会像文档(InsertSinkFilter,InsertSourceFilter,BridgeGraphs等)那样做,但GMFBridge源过滤器不会收到任何帧。
DirectShow.NET samples中的GMFPreview示例有效,但它使用RenderStream函数来准备图表。我的代码和GMFPreview之间的唯一区别是我手动添加我的过滤器并连接它们的引脚并启动图形(我不使用RenderStream函数)。
如何在GMFBridge源滤波器中接收帧?
答案 0 :(得分:1)
调试它的第一步是在JoinFilterGraph方法中启用图形注册,并确保(使用Graphedt连接到远程图形)引脚按预期方式连接。
然后,创建一个日志文件 - 在My Documents中创建一个空文件gmfbridge.txt,运行该应用程序,然后查看日志以查看交付的距离。
答案 1 :(得分:1)
我无法相信我犯了多么愚蠢的错误。我以前用ICaptureGraphBuilder
个实例做桥接图:
Bridge.BridgeGraphs(Graph_builder, Graph_builder2);
但实际上我应该使用接收器过滤器和源过滤器参数桥接图形:
Bridge.BridgeGraphs(Graph_BridgeSinkFilter, BridgeSourceFilter);