为什么基于Blink的浏览器会隐藏和搜索?

时间:2016-01-20 11:26:01

标签: c# google-chrome ffmpeg chromium electron

我们有一个C#工具(我写的)记录了一个自定义编写(我们写的)flash应用程序的在线广播。 (这里没有DRM或版权问题。)

我们编写了一个系统,该工具安装在Windows Server 2012 R2 Amazon AWS实例上。启动实例后,工具加载,等待正确的时间开始记录,启动浏览器并传递URL的命令行参数以访问广播。然后,浏览器将加载Flash应用程序,访谈音频和视频将开始到达AWS上的浏览器实例

通过虚拟音频线缆驱动程序,屏幕/音频捕获指示过滤器和ffmpeg进行屏幕录制。 C#工具调用ffmpeg,ffmpeg将在整个访谈中可靠地记录屏幕,然后该工具关闭整个事件

我遇到的问题是,Chrome和Electron浏览器有时根本不会在屏幕上自行绘制,因此所有ffmpeg最终录制的是一个空白桌面和广播的音频(因此,浏览器正在运行)

我们发现这一点,当录制开始时只用X小时记录Windows桌面和工具的主窗口带倒数计时器。

该工具内置了一个截屏工具,并将其添加到其Web控制界面,这样我们就可以测试浏览器是否可见 - 人们在录制开始后查看每个广播的屏幕截图(浏览器是应该在这个时候出现)

我们注意到50%的时间,浏览器都没有在屏幕上绘图。 50%我的意思是AWS实例执行的每个其他记录都是空白的:AWS启动,记录正常,关闭。 AWS在一小时后再次启动以进行不同的广播,录制为空白,关闭..启动/确定/关闭。开始/空/关机。无限重复广告

更奇怪的是,如果我在我的开发机器上运行VNCviewer并连接到有问题的实例,则VNC连接启动并且我的屏幕上显示远程桌面的瞬间,浏览器突然出现,好像什么都没有错。 VNC连接之前的屏幕截图显示空白桌面,连接VNC,另一个屏幕截图,浏览器就在那里。通过它,音频很好 - 连接到boadcast的浏览器很好,肯定是

好像Chrome / Electron认为"你知道什么,没有人看着我,所以我不打算自己画画"。没有设置屏幕保护程序,但电源计划具有设置" 15分钟后关闭显示器"。

也许Chrome / Electron的测试数量为"如果显示屏关闭,则不会绘制"。我无法解释这种不一致性 - 记录仪在需要之前至少1小时启动,并且在那里空闲,直到启动浏览器为止。因此,您可以想象在15分钟后关闭显示器的电源"设置将可靠地确保"监控"是"关"到每个录制开始时都会出现

任何其他浏览器都不会发生这种情况(但不幸的是,该应用程序并不适用于它们,因为它使用了一些奇怪的纯铬技术/ API)。

任何人都可以提出任何建议,以帮助调试这个,或者我可以构建到C#工具中的任何东西来克服这个问题吗?在推出浏览器后,通过VNC编程将其连接到自己几秒钟。好吧,这只是味道讨厌。

当然,只要我通过VNC连接到机器(而不是RDP-RDP不可用,因为录制上下文是针对特定用户的登录会话),问题就会消失,这使得它成为可能。令人沮丧地难以调试。

1 个答案:

答案 0 :(得分:0)

我不确定究竟是什么导致了您的问题,但这听起来像系统的相互作用会阻止它。与系统交互的一种方法是使用键盘,这可以自动化。

您可以尝试使用

在C#中发送按键(如“F15”)eway这么多秒

Windows Input Simulator或者SendKeys.Send

将上述内容与某种Timer

结合使用

也许快速浏览一下名为Caffeine的应用程序...它会为你按下“F15”键这么多秒钟。他们声称“F15”通常不会触发Windows中的任何内容(自2010年发布以来)。

Caffeine App