【发布时间】:2014-07-17 12:55:30
【问题描述】:
我有一个网络摄像头,我想在不停止渲染器的情况下开始/停止视频录制。这就是我想使用 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 Source Filter 中接收帧应该怎么做?
【问题讨论】:
-
渲染器是否工作?你怎么知道 GMFBridge 源过滤器不接收样本? (即编码器或文件写入器不会有问题吗?)
-
是的,渲染器工作,但另一个分支没有。我不认为是关于编码器什么的,因为我用编码器部分更改了渲染器部分,然后我的录制成功但渲染器是黑色的。
-
我解决了这个问题并贴在下面。现在我的渲染器过滤器在单独的图中,它通过 GMFSourceFilter 获取帧。问题是:当我将窗口移动到另一个监视器时,图形停止并且不启动。为什么图形不会自动启动?我怎样才能检测到这种情况并再次运行图表?
标签: c# video directshow directshow.net