Вопрос или проблема
Здравствуйте, я получаю эту ошибку, когда пытаюсь захватить экран на 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
-
Проблема с открытием дисплея: Сообщение об ошибке “Cannot open display :0.0+0,0” указывает на то, что
ffmpeg
не имеет доступа к дисплею. Это может быть вызвано рядом причин:- Вы не используете графический интерфейс. Убедитесь, что вы работаете из графического окружения, так как
x11grab
требует доступ к X серверу. - У вас могут быть ограничения доступа между пользователем и X сервером. Чтобы решить эту проблему, вы можете попробовать выполнить следующую команду для разрешения доступа:
xhost +local:$(whoami)
- Убедитесь, что переменная окружения
DISPLAY
правильно установлена. Проверьте её, выполнив:echo $DISPLAY
Если она не соответствует
:0.0
, то, возможно, вам нужно экспортировать правильное значение:export DISPLAY=:0.0
- Вы не используете графический интерфейс. Убедитесь, что вы работаете из графического окружения, так как
-
Корректировка команды: Ваша команда пытается одновременно захватить экран и записывать на устройство видео. Вам следует убрать
/dev/video0
и указать выходной файл для захвата экрана. Измените вашу команду следующим образом:ffmpeg -f x11grab -r 15 -s 1920x1080 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 capture.mkv
-
Использование 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 можно найти на этом сайте.
Если у вас остались вопросы по данной теме, не стесняйтесь задавать их!