我使用的是Windows 10,我使用OBS来记录网络浏览器的窗口。我录制在线课程供以后使用,很多时候我必须切换窗口或桌面,当网络浏览器窗口没有聚焦时,在 Firefox 上 10 秒后,立即在基于 Chromium 的浏览器上,网络浏览器屏幕冻结(Firefox)或变黑空白(Chromium),以节省渲染资源等。我尝试了很多方法来阻止这种情况发生:
- 更改 Windows 样式,例如透明度和始终位于顶部。请参阅:窗口样式和扩展窗口样式
- 安装浏览器扩展来更改文档对象,如下所示:
document.visibilityState = 'visible'; document.hidden = false
欺骗选项卡,使其认为它仍然可见。请参阅:始终可见且始终活动的窗口 - 尝试不同的录音程序。
- 尝试不同的主要网络浏览器(Chrome、Firefox、Edge、Opera、Brave)。
- 切换硬件加速。
- 在设置或 about:config 或 chrome:flags 以及相关扩展中切换内存节省选项。参见:伟大的吊带
我认为首先是 Chrome 采用了这种行为,所以我停止使用它,并转移到 Firefox,然后 Firefox 采用了这种行为,我转移到 Edge 浏览器,但新更新的 Edge 浏览器(基于 Chromium)也是如此做这个。我还尝试过 Opera 和 Brave。
另一种想法是在OBS(浏览器源功能)内记录课程,但在大多数在线会话中,我的存在仅限于一个选项卡/浏览器,因此我无法使用OBS的浏览器打开浏览器选项卡来记录会话。我需要在浏览器上保持活跃,响应课程等。我希望能够录制屏幕并在桌面和窗口之间自由移动。正如您所看到的,我无法在虚拟机内记录浏览器,因为我可能必须将主机的桌面共享给全班同学。在虚拟机内安装 VS Code 等程序并在虚拟机之间同步文件会很麻烦。
OBS 论坛上讨论了类似的问题:Problem with window capture when the window not focus
在 Chrome 中,有一个标志:
chrome://flags/#calculate-native-win-occlusion
,如果窗口不在前台,它将卸载活动选项卡。您可以尝试禁用它。之后重新启动浏览器,否则无效。我使用最新的 Chrome 作为最新 OBS 中的窗口捕获进行了测试,并且:
还有一个适用于没有此类功能/标志的其他浏览器或窗口的应用程序:WindowTop,它尝试将窗口设置在顶部,包括在收缩/透明模式下。有一个问题讨论了欺骗浏览器的解决方法,但不确定它的工作效果如何以及适用于哪些浏览器。
火狐浏览器:
导航到about:config并搜索browser.tabs.unloadOnLowMemory。将其设置为 false。
铬合金:
打开“设置”并使用搜索栏查找“内存保护程序”(在某些 Chrome 克隆中,它可能是“Tab 睡眠”等)。关闭该功能。
至于Microsoft Edge,您应该寻找“打开效率模式”和“通过休眠选项卡节省资源”(将其关闭)。
PS:还要确保您没有安装任何用于卸载非活动选项卡的第三方扩展。
对于 Firefox,我怀疑禁用该设置可能会
widget.pause-compositor-when-minimized
解决此问题。(这不是一个“内存节省器”,而是一个“省电器”——当窗口不可见时,程序停止渲染是相当常见的,特别是现在网络浏览器像游戏一样使用 GPU 渲染;而 Firefox 可能无法知道它的窗口正在被记录。)