1

Я пытаюсь записать видео с Xvfb используя ffmpeg или avconv. Я запускаю Xvfb с:

$ Xvfb :29 -screen 0 1024x768x24

Когда я позже попробую записать отображение :29 с помощью avconv (тот же вывод для ffmpeg):

$ avconv -f x11grab -s xga -r 25 -b 2000k -i :29.0 -y selenium.avi

Я получаю следующую ошибку:

avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
  built on Nov  6 2012 16:51:33 with gcc 4.6.3
[x11grab @ 0x1915b80] device: :29.0 -> display: :29.0 x: 0 y: 0 width: 1024 height: 768
[x11grab @ 0x1915b80] shared memory extension  found
X Error of failed request:  BadCursor (invalid Cursor parameter)
  Major opcode of failed request:  142 (XFIXES)
  Minor opcode of failed request:  25 (XFixesGetCursorImageAndName)
  Resource id in failed request:  0x200001
  Serial number of failed request:  14
  Current serial number in output stream:  14

avconv работает для отображения :0 и создает правильное видео. Также я могу подключиться к дисплею :29 с x11vnc/vncviewer . Я заметил, что при разрешении 1024x768x8 (8 бит, а не 24) avconv не выходит из строя, но выводимое видео полностью черное.

Я пропускаю какую-то важную опцию или настройку? Я использую Linux 3.2.0-36-generic (Ubuntu 12.04x64).

2 ответа2

2

Скорее всего, это было исправлено Исааком Дули в FFmpeg с коммитом 469a65b, исправляющим ошибку # 1738 x11grab BadCursor. Вам придется скомпилировать ffmpeg, так как статические сборки не включают поддержку x11grab. Для всех поддерживаемых версий Ubuntu имеется простое руководство по компиляции по адресу: Компиляция FFmpeg в Ubuntu.

avconv не содержит этого исправления (и многих других), так как libav игнорирует большую часть активности FFmpeg.

Также см. HOWTO: Правильная демонстрация экрана в Linux.

0

У меня точно такая же проблема. Пожалуйста, выполните следующую последовательность действий, которая должна работать на вас.

  1. $ Xvfb: 2-экран 0 1024x768x24 &

  2. $ export DISPLAY =: 2

  3. $ xeyes &
    Примечание. Если приложение X (например, xeyes) не запущено, вы получите ошибку BadCusor.

  4. $ avconv -f x11grab -s xga -r 25 -b 2000k -i: 29,0-й селен.avi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .