使用GMFBridge检测渲染器窗口的监视器更改

时间:2014-08-04 15:31:31

标签: c# video directshow renderer directshow.net

我想使用DirectShow从模拟相机渲染和录制视频。当我将渲染器窗口从一个监视器移动到另一个监视器时,图形重新启动并重新启动图形会导致记录丢失。为了避免这种情况,我开始使用GMFBridge。我将视频编码并写入文件并使用Infinite Tee,我将帧传递给渲染器所在的第二个图形。因此,当渲染器图重新启动时,我的录制图将不会影响。

但是当我将窗口移动到另一台显示器时,第二个图形(渲染器图形)停止,我看到的只是黑屏。使用GMFBridge时停止后为什么渲染器图形无法启动?

我想我应该处理事件。我发现当我将窗口移动到另一台显示器时,我收到这些消息:

#define EC_VMR_RENDERDEVICE_SET 0x53

#define EC_PAUSED               0x0E

但我不知道处理这些消息是否正确(了解监视器更改)。

1 个答案:

答案 0 :(得分:0)

我将视频渲染器过滤器从Video Renderer更改为Video Mixing Renderer Filter 9,现在一切正常。当我将窗口移动到另一台监视器时,图形重新启动没有问题。由于我使用GMFBridge,重新启动渲染器图形不会影响我的录制图形。