Получился черный экран при записи экрана с xvfb на устройстве ffmpeg x11grab

Я пытаюсь записать видео с Firefox под управлением xvfb-run но он всегда ничего не выводит в видеофайле, кроме черного экрана.

Вот что я сделал:

запустите Firefox, откройте google.com:

$ xvfb-run firefox https://google.com

Затем он будет использовать сервер по умолчанию номер дисплея 99. Я могу увидеть информацию дисплея по команде xdpyinfo -display :99,

Скриншот работает очень хорошо по команде:

$ xwd -root -silent -display :99.0 | xwdtopnm |pnmtojpeg > screen.jpg

Начните использовать ffmpeg для записи видео:

$ ffmpeg -f x11grab -i :99.0 out.mpg

Когда я играю видео файл out.mpg, есть черный экран все время.

Есть ли какой-то параметр, который я пропустил?

Обновления

Я сделал успехи, что видео работает вместо черного экрана только этой командой:

$ ffmpeg -y -r 30 -g 300 -f x11grab -s 1024x768 -i :99 -vcodec qtrle out.mov

Обратите внимание, что требуется соответствие разрешения экрана, указав дополнительные параметры для xvfb-run:

$ xvfb-run -s "-screen 0 1224x768x16" -a firefox http://google.com

Но я все еще хочу получить больше отзывов и ответов здесь.

5 ответов

У меня случилась та же проблема, и я выяснил: вам нужно указать глубину (в нашем случае 16), чтобы ffmpeg не создавал черный экран.

например

Xvnc -geometry 1024x768 -depth 16 :10  <<---WORKS
Xvnc -geometry 1024x768 :10            <<---does NOT work, produce black screen.

Я была такая же проблема. Похоже, это как-то связано с версией ffmpeg, доступной в официальных пакетах Ubuntu (Kubuntu 15.04 в моем случае, если быть точным).

Я скачал исходники ffmpeg и с помощью некоторых документов мне удалось запустить что-то.

Процесс сборки занимает много времени! И по умолчанию многие функции (в том числе x11grab) отключены. Я закончил со следующим:

./configure \
    --prefix=/home/exhuma/.local \
    --enable-x11grab \
    --enable-gpl \
    --enable-libx264 \
    --enable-libmp3lame \
    --enable-nonfree

Теперь у меня есть и видео, и звук.

Я столкнулся с аналогичной проблемой (черное видео, а на скриншотах был кадровый буфер) со следующей строкой:

$ ffmpeg -f x11grab -i :99.0 out.mp4

Не имея возможности найти какое-либо решение, я изменил (из-за плохого отчаяния) расширение / кодировщик на "webm".
И вдруг это сработало, я получил видео с актуальным содержанием:

$ ffmpeg -f x11grab -i :99.0 out.webm

Так что понятия не имею, что здесь происходит (сломанный кодировщик?), Но, возможно, стоит попробовать тем, у кого после записи осталось черное видео.

РЕДАКТИРОВАТЬ /PS: Оказалось, что моя проблема заключалась в VLC, который не мог декодировать x264 на аппаратном уровне и в итоге получилось черное видео. "mplayer" или любой другой был в порядке. Так что проблема была не в записи. Дох.

Была эта проблема в Ubuntu 22. Чтобы исправить это, пришлось включить xorg на экране входа в систему:

Я не знаю, исправили ли вы эту ошибку, но если вы не дали мне помочь, потому что я столкнулся с той же проблемой. Вот решение (я работаю на Fedora 30):

Ваша потребность в настройке Xorg по умолчанию GNOME сессия. На вашем терминале откройте свой custom.conf набрав эту команду sudo nano /etc/gdm/custom.conf и раскомментируйте WaylandEnable=false если это закомментировано, но должно быть установлено false

Затем на [daemon] раздел чуть ниже WaylandEnable=false добавить эту строку DefaultSession=gnome-xorg.desktop и сохраните файл. Затем попробуйте снова запустить программу Screen Recorder. Поздравляю.

Однако, если команда nano не работает, попробуйте установить ее, выполнив командуsudo dnf install nano или же sudo apt-get install nano который всегда работает для вас.

Другие вопросы по тегам