непрерывная запись экрана для отчетов об ошибках - PullRequest
0 голосов
/ 07 ноября 2011

У нас есть настольный клиент с несколькими сотнями пользователей в нашей компании. Иногда это вызывает исключения и сбои, но было трудно заставить пользователей сообщать о своих проблемах. Чтобы отследить эти исключения, мы отлавливаем их и отправляем по электронной почте данные трассировки стека и пользовательские данные, относящиеся к сбою, на сервер, с которого затем мы можем просмотреть журнал всех сбоев.

Что было бы действительно хорошо, если бы мы могли регистрировать не только детали исключений, но и видеоклип записи экрана, скажем, за последние 2 минуты до исключения.

Это не должно быть очень сложно, все, что нам нужно, это какое-то программное обеспечение, которое непрерывно записывает экран и сохраняет видео на диске, но стирает все, что старше определенного количества минут. Когда происходит сбой, мы можем просто выбрать текущий видеоклип и прикрепить его вместе с деталями исключения.

Кто-нибудь знает о таком программном обеспечении или о чем-то подобном, что решило бы нашу проблему?

---------- Решено: Я использовал ответы AndrewThompson и pjvds ниже. Схема стратегии Эндрюса, но с C # вместо Java, просто потому, что наше приложение написано на C #. Связанная с pjvds статья Code Project помогла мне понять, как это сделать в C #.

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

Вот одна стратегия:

  1. Определите объект ScreenGrab, который инкапсулирует BufferedImage и другую соответствующую информацию (например, время в миллисекундах или местоположение мыши).
  2. Получите снимок экрана, используя либо Robot, либо установив BufferedImage размер области содержимого, и раскрасьте панель содержимого в экземпляр Graphics, полученный из изображения.
  3. Создайте ScreenGrab объект и добавьте его в ArrayList
  4. Если список массивов превысил определенный размер, удалите первый ScreenGrab в списке.
  5. Промойте и повторите, возможно, со скоростью 2FPS,пока не произойдет ошибка.
  6. Либо:
    1. Используйте адаптированную версию JpegImagesToMovie (использует JMF) для преобразования изображений (с нарисованной псевдо-мышью) в MOV.
    2. Заархивируйте все ScreenGrab объекты и отправьте архив.

Изменения в этой технике.Преимущество отправки архива ScreenGrab несколько:

  1. Он может отлично записывать графический интерфейс без эффекта «потерь», типичного для сжатия JPEG.
  2. Если пользователь покидаеткомпьютер, ни экран, ни положение мыши не изменятся.Так что сравнивайте каждый с последним, и если детали одинаковы, пропустите их хранение.MOV должен быть с постоянной частотой кадров, но Zip пользовательских объектов может записывать с любой скоростью, которая лучше всего подходит для пользовательской активности.
1 голос
/ 07 ноября 2011

Я помню, что несколько лет назад попробовал какой-то код из статьи Code Project, чтобы выполнить то же самое. Захват действий на экране в фильме .

Мы удалили его из нашего программного обеспечения релизом позже из-за множества жалоб.Людям не нравится, когда их начальник записывает их экран; -)

...