gpt4 book ai didi

c# - 为什么我的基于 Blink 的浏览器会玩捉迷藏?

转载 作者:行者123 更新时间:2023-12-04 23:28:04 25 4
gpt4 key购买 nike

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

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

通过虚拟音频电缆驱动程序、屏幕/音频捕获 directshow 过滤器和 ffmpeg 进行屏幕录制。 C# 工具调用 ffmpeg 并且 ffmpeg 将可靠地记录整个采访的屏幕,然后该工具将整个过程关闭

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

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

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

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

更奇怪的是,如果我在我的开发机器上运行 VNCviewer 并连接到一个有问题的实例,当 VNC 连接启动并且远程桌面显示在我的屏幕上时,浏览器突然出现,好像从来没有错。 VNC 连接之前的屏幕截图显示空白桌面,连接 VNC,再进行屏幕截图,浏览器就在那里。通过它,音频很好 - 连接到广播的浏览器很好,当然

就好像 Chrome/Electron 认为“你知道吗,没有人在看着我,所以我不会费心去画自己”。没有设置屏幕保护程序,但电源计划有“15 分钟后关闭显示器”的设置。

也许 Chrome/Electron 有一个测试相当于“如果显示器关闭,请不要画画”。不过,我无法解释这种不一致 - 记录器至少会在需要它之前 1 小时启动,然后一直闲置到启动浏览器的时间。因此,您可以想象“15 分钟后关闭显示器电源”设置将可靠地确保在每次录制开始时“显示器”已“关闭”

任何其他浏览器都不会发生这种行为(但不幸的是,该应用程序不会也无法在它们中运行,因为它使用了一些奇怪的仅限 chrome 的技术/API)。

任何人都可以建议任何可以帮助调试的东西,或者我可以在 C# 工具中构建的任何东西来解决这个问题吗?在它启动浏览器后,将其编码为通过 VNC 连接自身几秒钟......好吧,这味道很糟糕。

自然,只要我通过 VNC(而不是 RDP - RDP 不可用,因为录制上下文处于特定用户的登录 session 中)连接到机器,问题就会消失,这使得调试非常困难。

最佳答案

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

您可以尝试在 C# 中使用这么多秒发送一次击键(如“F15”)

Windows Input Simulator或者也许 SendKeys.Send

将上述内容与某种 Timer 结合起来

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

Caffeine App

关于c# - 为什么我的基于 Blink 的浏览器会玩捉迷藏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34898734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com