skypeforlinux распознает внешнюю веб-камеру, но выдает черный экран

Ситуация

Ubuntu 16.04, skypeforlinux 8.53.0.85 и 8.58.0.93 (последняя версия с веб-сайта Skype ])

  • Внешняя веб-камера работает с Cheese
  • Внешняя веб-камера распознается Skype, как показано на скриншоте ниже

    • Отображаются идентификатор поставщика и продукта, предоставленные lsusb в диалоговом окне Skype (в шестнадцатеричном формате)
    • веб-камера на , но экран не активирован : черный экран

      enter image description here

Исследование

Этого нет на официальном сайте список известных проблем Skype для Linux: https://support.skype.com/en/faq/FA34713/faq-and-known-issues-with-skype

В нескольких старых сообщениях предлагается проверить, есть ли библиотеки v4l и gstreamer установлены. Это:

ii  libv4l-0:amd64  1.10.0-1  amd64  Collection of video4linux support libraries  
ii  libv4l-dev:amd64  1.10.0-1  amd64  Collection of video4linux support libraries (development files)
ii  libv4l2rds0:amd64  1.10.0-1  amd64  Video4Linux Radio Data System (RDS) decoding library
ii  libv4lconvert0:amd64  1.10.0-1  amd64 Video4linux frame format conversion library
ii  gir1.2-gst-plugins-base-1.0  1.8.3-1ubuntu0.3  amd64  GObject introspection data for the GStreamer Plugins Base library
ii  gir1.2-gstreamer-1.0  1.8.3-1~ubuntu0.1  amd64  GObject introspection data for the GStreamer library
ii  gnome-video-effects  0.4.1-3ubuntu1  all  Collection of GStreamer effects
ii  gstreamer1.0-alsa:amd64  1.8.3-1ubuntu0.3  amd64  GStreamer plugin for ALSA
ii  gstreamer1.0-clutter-3.0  3.0.18-1  amd64  Clutter PLugin for GStreamer 1.0
ii  gstreamer1.0-libav:amd64  1.8.3-1ubuntu0.2  amd64  libav plugin for GStreamer
ii  gstreamer1.0-plugins-base:amd64  1.8.3-1ubuntu0.3  amd64  GStreamer plugins from the "base" set
ii  gstreamer1.0-plugins-base-apps  1.8.3-1ubuntu0.3  amd64  GStreamer helper programs from the "base" set
ii  gstreamer1.0-plugins-good:amd64  1.8.3-1ubuntu0.4  amd64  GStreamer plugins from the "good" set
ii  gstreamer1.0-plugins-ugly:amd64  1.8.3-1ubuntu0.1  amd64  GStreamer plugins from the "ugly" set
ii  gstreamer1.0-plugins-ugly-amr:amd64  1.8.3-1ubuntu0.1  amd64  GStreamer plugins from the "ugly" set
ii  gstreamer1.0-pulseaudio:amd64  1.8.3-1ubuntu0.4  amd64  GStreamer plugin for PulseAudio
ii  gstreamer1.0-tools  1.8.3-1~ubuntu0.1  amd64  Tools for use with GStreamer
ii  gstreamer1.0-x:amd64  1.8.3-1ubuntu0.3  amd64  GStreamer plugins for X11 and Pango
ii  libclutter-gst-3.0-0:amd64  3.0.18-1  amd64  Open GL based interactive canvas library GStreamer elements
ii  libgstreamer-plugins-base1.0-0:amd64  1.8.3-1ubuntu0.3  amd64  GStreamer libraries from the "base" set
ii  libgstreamer-plugins-good1.0-0:amd64  1.8.3-1ubuntu0.4  amd64  GStreamer development files for libraries from the "good" set
ii  libgstreamer1.0-0:amd64  1.8.3-1~ubuntu0.1  amd64  Core GStreamer libraries and elements
ii  libreoffice-avmedia-backend-gstreamer  1:5.1.6~rc2-0ubuntu1~xenial10  amd64  GStreamer backend for LibreOffice
ii  phonon-backend-gstreamer:amd64  4:4.8.2-0ubuntu2  amd64  Phonon GStreamer 1.0 backend
ii  phonon-backend-gstreamer-common:amd64  4:4.8.2-0ubuntu2  amd64  Phonon GStreamer 1.0.x backend icons
ii  totem  3.18.1-1ubuntu4  amd64  Simple media player for the GNOME desktop based on GStreamer

Направление запуска в сторону библиотек совместимости или преобразования либо с помощью

LD_PRELOAD = / usr / lib / x86_64-linux-gnu / libv4l / v4l2convert.so / usr / share / skypeforlinux / skypeforlinux

или

LD_PRELOAD = / usr / lib / x86_64-linux-gnu / libv4l / v4l1compat.so / usr / share / skypeforlinux / skypeforlinux

запускает Skype, но не устраняет проблему. Обратите внимание, что / usr / bin / skype - это сценарий bash, запускающий / usr / share / skypeforlinux / skypeforlinux , который я использовал выше в качестве теста.

Вопрос

Есть ли предложения, как заставить Skype отправлять сигналы через веб-камеру?

3
задан 30 March 2020 в 16:25

2 ответа

У меня была такая же проблема, и я пробовал много вещей. Я использую Ubuntu 19.10 (eoan), версию Skype 8.59.76.73 и версию libv4l 1.16.7-1. Мое решение этой проблемы основано на этой ссылке Ubuntuforums.

  1. Полностью удалите Skype из вашей системы с помощью

    sudo apt-get purge skype*
    

    или

    быстро удалить скайп
    
  2. Установите пакеты libv4l-dev

    sudo apt install libv4l-dev
    
  3. Найдите, куда загружены пакеты lib4l, с помощью следующей команды:

    find / -iname "*libv4l*" 2>/dev/null
    
  4. Переустановите последнюю предварительную версию skypeforlinux из этого репозитория Skype.

  5. Перезагрузите систему.

  6. Используя путь к libv4l, который вы нашли, используйте следующую команду для запуска skypeforlinux

    LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l2convert.so skypeforlinux
    

Надеюсь, это поможет, Я решил свою проблему с помощью этих шагов.

2
ответ дан 12 April 2020 в 16:02

Я знаю 2 способа заставить вашу веб-камеру работать на skypeforlinux.

  1. Предварительно загрузите одну из библиотек совместимости Video For Linux.

    galiperkin упомянул один из них, v4l2convert.so; если это не сработает, вы можете найти другой, v4l1compat.so, и предварительно загрузить его в свою команду для запуска Skype. Например, если вы найдете эту библиотеку в /usr/lib/x86_64-linux-gnu/libv4l/, закройте Skype и попробуйте запустить его снова с помощью этой команды:

    LD_PRELOAD=/usr/lib/ x86_64-linux-gnu/libv4l/v4l1compat.so skypeforlinux
    

    Если он выдает вам сообщения о несовместимой версии ELF, возможно, вы загружаете 64-битные библиотеки для 32-битного Skype или что-то в этом роде: найдите другую версию.

  2. Преобразование экзотического вывода с веб-камеры в общепринятый формат.

    Если Skype обнаруживает вашу веб-камеру, но показывает только черный прямоугольник, когда вы открываете ее, скорее всего, он просто не может понять вывод веб-камеры. Моя собственная веб-камера транслирует в движении jpeg в пиксельном формате «yuvj422p», о котором я никогда раньше не слышал. Попробуйте, если ffplay справится; если это возможно, ffmpeg тоже может, и это может вас спасти.

    Сначала перечислить доступные входы

     $ v4l2-ctl --list-devices
    

    Мой вывод гласит:

     Видео BT878 (Hauppauge (bt878)) (PCI:0000:05:01.0):
     /dev/video0
     /dev/vbi0
    USB-камера (041e:401f) (usb-0000:00:14.0-11.2):
     /dev/видео1
    

    Поэтому я выбираю второй для тестирования:

     $ ffplay -hide_banner -f v4l2 -i /dev/video1
    

    -hide_banner — параметр удобства, -f v4l2 выбирает формат демультиплексора, -i /dev/video1 моя веб-камера.

    Если ffplay хорошо работает с вашей веб-камерой, вы можете остановить ее, набрав 'q' в окне видео, а затем продолжить. Установите петлевой драйвер Video For Linux; вам нужно сделать это только один раз, но вам нужны права sudo:

     $ sudo apt-get update
     $ sudo apt-get установить v4l2loopback-dkms
    

    Это добавит на ваш диск чуть больше 100 КБ: модуль ядра v4l2loopback. Вы должны загрузить это в свое ядро, еще одно действие sudo:

     $ sudo modprobe v4l2loopback
    

    после чего сразу можно обнаружить лишний видеовход:

     $ v4l2-ctl --list-devices
    

    теперь должно отображаться примерно следующее:

     Видео BT878 (Hauppauge (bt878)) (PCI:0000:05:01.0):
     /dev/video0
     /dev/vbi0
    USB-камера (041e:401f) (usb-0000:00:14.0-11.2):
     /dev/видео1
    Фиктивное видеоустройство (0x0000) (платформа: v4l2loopback-000):
     /dev/видео2
    

    Все, что осталось сделать, это позволить ffmpeg принимать входные данные с вашей экзотической веб-камеры, преобразовывать их в общий формат, такой как yuv420p, и выводить их через модуль обратной связи. на фиктивное видеоустройство. Звучит сложно, но это не более чем эта команда: формат ввода - ввод - фильтр - формат вывода - вывод

     $ ffmpeg -hide_banner -f v4l2 -i /dev/video1 -vf format=yuv420p -f v4l2 /dev/video2
    

    Вы можете снова протестировать его работу с ffplay:

     $ ffplay -hide_banner -f v4l2 -i /dev/video2
    

    Обратите внимание, что я беру ввод с нового видеоустройства, манекена; video1 будет занят, пока ffmpeg читает из него.

    Хочу отметить, что ff-combo потребляет менее 1% мощности процессора на моем 5-летнем ребенке. Если все пойдет хорошо, остановите ffplay, набрав 'q' в его видеоокне, но пусть ffmpeg продолжится.

    Теперь перейдите в свой Skype и в настройках аудио и видео выберите петлевое устройство, названное выше: Фальшивое видеоустройство. Если это работает хорошо, все, что осталось сделать, это настроить и убрать за собой. Если нет, мне так же жаль, как и вам.

    Закройте ffmpeg, когда будете готовы, набрав q в терминале, в котором он запущен.Вы можете попробовать еще раз и виртуально обновить свою старую добрую веб-камеру, добавив фильтры в ffmpeg; они могут идти в дополнительных параметрах -vf, или вы можете добавить их до или после format=yuv420p, разделив их запятыми. Мой нуждается в усилении:

      -vf format=yuv420p,spp=quality=3:mode=hard:qp=5,unsharp=3:3:0.7:5:5:-0.5,hqdn3d,eq=saturation= 1,8:гамма=1.4
    

    но я уверен, что вы можете найти свои собственные фильтры ffmpeg и узнать, как их использовать. Вы можете попробовать их с помощью ffplay, прежде чем добавлять их в свою ffmpeg командную строку

    Теперь вы не хотите читать этот текст и вводить его команды каждый раз, когда вы получаете или делаете Звонок по скайпу. Я поместил свой в ~/.bash_aliases следующим образом, под псевдонимом videoskype:

     alias videoskype="xterm -e /bin/bash -ic 'sudo modprobe v4l2loopback;echo Готов к видеовызову, нажмите q, чтобы остановить;ffmpeg -hide_banner -f v4l2 -i /dev/video1 -vf format=yuv420p -f v4l2 /dev/video2;sudo modprobe --remove v4l2loopback'&"
    

    Отныне одна команда videoforskype, заданная в интерактивной оболочке (обычный терминал или программа запуска для чего-то вроде bash -ic videoskype), откроет терминал, который запрашивает ваш пароль sudo для загрузки модуля обратной связи, поддерживает работу ffmpeg до тех пор, пока вы его не остановите, и выгружает модуль обратной связи.

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

Успех!!

2
ответ дан 24 November 2020 в 16:23

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

Похожие вопросы: