监视器更改后图形重新启动

本文关键字:图形 重新启动 监视器 | 更新日期: 2023-09-27 18:00:57

我有一个DirectShow图形,它记录并显示视频源。当我将视频渲染器窗口移动到其他监视器时,我录制的内容将被删除,并重新开始录制。我搜索并找到了这个链接,上面写着更改监视器停止并启动图形。如何阻止图形重新启动?我不想在显示器之间切换时丢失我的录音。

感谢

监视器更改后图形重新启动

您所描述的行为基本上是设计行为(尽管副作用非常令人讨厌和困惑(。在监视器之间移动视频渲染器会重新分配用于呈现视频的硬件资源,而这反过来又需要状态转换。对于录制,状态转换意味着打开和关闭文件。

您的解决方案是拆分为演示图和记录图,或者使用自定义分配器/演示器以您想要的方式自己处理演示。据推测,图分割(Wimmel在另一个答案中提出的(是添加其他自由度的首选方式。

EC_DISPLAY_CHANGED消息的行为可能有一个很好的原因,所以我不知道当您自己处理此消息而不重新启动图时会有什么缺点。

相反,您可以使用GMFBridge将渲染图与录制分离。使用一个图形进行捕获和记录。仅将第二个图形用于渲染,因此重新启动该图形不会停止录制。

编辑:在重新启动第二个图形之前,可能需要断开连接。这意味着您确实需要处理EC_DISPLAY_CHANGED消息,即使您使用GMFBridge也是如此。

m_pController->BridgeGraphs(NULL, NULL);