gpt4 book ai didi

java - 连续屏幕录制以进行错误报告

转载 作者:行者123 更新时间:2023-12-02 08:06:46 28 4
gpt4 key购买 nike

我们公司有一个拥有数百名用户的桌面客户端。有时它会引发异常和崩溃,但很难让用户报告他们的问题。为了跟踪这些异常,我们捕获它们并将与崩溃相关的堆栈跟踪和用户特定数据通过电子邮件发送到服务器,然后我们可以从服务器查看所有崩溃的日志。

如果我们不仅可以记录异常详细信息,还可以记录屏幕录制视频剪辑,例如异常发生前的最后 2 分钟,那就太好了。

这应该不是很难,我们所需要的只是一些能够连续记录屏幕并将视频保存在驱动器上的软件,但会删除超过一定分钟数的所有内容。当崩溃发生时,我们可以简单地选择当前视频剪辑并将其与异常详细信息一起附加。

有人知道这样的软件或类似的软件可以解决我们的问题吗?

----------已解决:我在下面使用了 AndrewThompson 和 pjvds 的答案。安卓策略大纲,但是用C#而不是Java,仅仅是因为我们的应用程序是用C#编写的。链接的代码项目文章 pjvds 帮助我了解了如何在 C# 中执行此操作。

最佳答案

这是一种策略:

  1. 定义一个 ScreenGrab 对象,该对象封装 BufferedImage 和其他相关信息(例如以毫秒为单位的时间或鼠标位置)。
  2. 使用 Robot 或通过建立内容 Pane 大小的 BufferedImage 并将内容 Pane 绘制到 Graphics 来获取屏幕截图> 从图像中获取实例。
  3. 创建一个 ScreenGrab 对象并将其添加到 ArrayList
  4. 如果数组列表超出一定大小,请删除列表中的第一个 ScreenGrab
  5. 冲洗并重复(也许以 2FPS 的速度),直到出现错误。
  6. 要么:
    1. 使用 JpegImagesToMovie 的改编版本(使用 JMF)将图像(使用伪鼠标绘制)转换为 MOV。
    2. 压缩所有 ScreenGrab 对象并发送存档。

对此技术进行了调整。发送 ScreenGrab 存档的优点是多方面的。

  1. 它可以完美记录 GUI,不会出现 JPEG 压缩典型的“有损”效果。
  2. 如果用户离开计算机,屏幕和鼠标位置都不会改变。因此,将每一个与最后一个进行比较,如果细节相同,则跳过存储它。 MOV 必须采用恒定的帧速率,但自定义对象的 Zip 可以以最适合用户 Activity 的速率进行记录。

关于java - 连续屏幕录制以进行错误报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8034449/

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