Получился черный экран при записи экрана с 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
который всегда работает для вас.