ошибка ffmpeg Не удается открыть дисплей :0.0+0,0, ошибка 1. :0.0+0,0: Ошибка ввода/вывода

Вопрос или проблема

Здравствуйте, я получаю эту ошибку, когда пытаюсь захватить экран на Linux с помощью ffmpeg на Ubuntu 16.04:

Команда, которую я использую:

$ ffmpeg -f x11grab -r 15 -s 1920x1080 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0
    ffmpeg версия 4.1.1-0york1~16.04 Copyright (c) 2000-2019 разработчики FFmpeg
      собрана с помощью gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.11) 20160609
      конфигурация: --prefix=/usr --extra-version='0york1~16.04' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-nonfree --enable-libfdk-aac --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
      libavutil      56. 22.100 / 56. 22.100
      libavcodec     58. 35.100 / 58. 35.100
      libavformat    58. 20.100 / 58. 20.100
      libavdevice    58.  5.100 / 58.  5.100
      libavfilter     7. 40.101 /  7. 40.101
      libavresample   4.  0.  0 /  4.  0.  0
      libswscale      5.  3.100 /  5.  3.100
      libswresample   3.  3.100 /  3.  3.100
      libpostproc    55.  3.100 / 55.  3.100
    [x11grab @ 0x5611f156e540] Не удается открыть дисплей :0.0+0,0, ошибка 1.
    :0.0+0,0: Ошибка ввода/вывода

Похоже, вы пытаетесь захватить с более чем одного источника:

Вы указали x11 (что будет вашим экраном), а также указали /dev/video0 (что будет веб-камерой или другим устройством, как тюнер ТВ)

Уберите -f v4l2 /dev/video0 в конце и добавьте имя файла с расширением, например capture.mkv

Если вы планируете это делать регулярно, я бы порекомендовал OBS

sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt-get update
sudo apt-get install obs-studio

или посмотрите ссылку здесь, если это не сработает

https://www.ubuntupit.com/how-to-install-obs-screen-recorder-in-ubuntu-linux/

Ответ или решение

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

Ваша команда:

$ ffmpeg -f x11grab -r 15 -s 1920x1080 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0
  1. Проблема с открытием дисплея: Сообщение об ошибке “Cannot open display :0.0+0,0” указывает на то, что ffmpeg не имеет доступа к дисплею. Это может быть вызвано рядом причин:

    • Вы не используете графический интерфейс. Убедитесь, что вы работаете из графического окружения, так как x11grab требует доступ к X серверу.
    • У вас могут быть ограничения доступа между пользователем и X сервером. Чтобы решить эту проблему, вы можете попробовать выполнить следующую команду для разрешения доступа:
      xhost +local:$(whoami)
    • Убедитесь, что переменная окружения DISPLAY правильно установлена. Проверьте её, выполнив:
      echo $DISPLAY

      Если она не соответствует :0.0, то, возможно, вам нужно экспортировать правильное значение:

      export DISPLAY=:0.0
  2. Корректировка команды: Ваша команда пытается одновременно захватить экран и записывать на устройство видео. Вам следует убрать /dev/video0 и указать выходной файл для захвата экрана. Измените вашу команду следующим образом:

    ffmpeg -f x11grab -r 15 -s 1920x1080 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 capture.mkv
  3. Использование OBS Studio: Если вы планируете часто захватывать экран и вам нужно более функциональное решение, я рекомендую использовать OBS Studio, который имеет интуитивно понятный интерфейс и множество возможностей для настройки. Чтобы установить OBS Studio, выполните следующие команды:

    sudo add-apt-repository ppa:obsproject/obs-studio
    sudo apt-get update
    sudo apt-get install obs-studio

Дополнительную информацию о настройке OBS можно найти на этом сайте.

Если у вас остались вопросы по данной теме, не стесняйтесь задавать их!

Оцените материал
Добавить комментарий

Капча загружается...