Виртуальная веб-камера с video4linux2, не доступным в некоторых сервисах видеочата [дубликат]

Я хочу использовать веб-камеру на своем ноутбуке как видеоустройство на моем ПК для использования его для организации видеоконференций и т.д.

Таким образом, я не только хочу передать видео потоком. Я на самом деле хочу "передать все устройство потоком" по сети.

Так, два компьютера, потоки его веб-камера, другой берет его как видеоустройство.

Оба вычисляют запущенную нормальную Ubuntu 18.04 однако, я скоро обновлю до 20,04

17
задан 8 April 2020 в 08:23

6 ответов

Asuming обе машины подключены в сети и ПК, может достигнуть IP ноутбука. Выполните эти шаги:

На ноутбуке

Установка v4l-utils и ffmpeg путем выполнения:

sudo apt install v4l-utils ffmpeg

Установка matroska контейнер медиа как так:

sudo apt install libmatroska6v5

Выполните следующую команду для открытия a netcat слушатель для потока камеры:

ffmpeg -i /dev/video0 -codec copy -f matroska - | nc -l 9999

На ПК

Установка v4l-utils и ffmpeg путем выполнения:

sudo apt install v4l-utils ffmpeg

Установка v4l2loopback и загрузите виртуальную камеру:

  • Выполнение это:
sudo apt install v4l2loopback-dkms v4l2loopback-utils
  • Затем это:
sudo modprobe -r v4l2loopback
  • Затем это:
sudo depmod -a
  • Затем это:
sudo modprobe v4l2loopback exclusive_caps=1 card_label="MyLaptopCam:MyLaptopCam"

Протестируйте его:

  • Передайте реальную камеру потоком на ноутбуке к виртуальной камере на ПК (изменение Laptop_IP к IP ноутбука):
nc Laptop_IP 9999 | ffmpeg -i /dev/stdin -codec copy -f v4l2 /dev/video0
  • Запустите и играйте виртуальную камеру:
ffplay /dev/video0
  • Скажите сыр камере своего ноутбука.

Если Вы видите свою поверхность, то она работает.


Микрофон?

Для отправки по выводу микрофона также от ноутбука tp ПК выполните эти шаги:

На ноутбуке:

  • Выполнение это:
arecord -f cd -c 1 | nc -l 7777

На ПК:

  • Выполнение это:
sudo modprobe snd-aloop
  • Затем это:
arecord -l | grep -i loopback

Вывод будет чем-то вроде этого:

card 1: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
card 1: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]

мы будем использовать устройство 1 (это обычно - виртуальный микрофон) на карте 1 как это hw:1,1

  • Затем выполните это (изменение Laptop_IP к IP ноутбука):
nc Laptop_IP 7777 | aplay -f cd -D hw:1,1 
  • Выберите новое устройство микрофона в Параметре настройки системы-> Звук-> Вход.

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


Уведомление:

  • Это было протестировано и работающий безупречно над двумя машинами, выполняющими актуальные равные версии Ubuntu 19.10.

Если тест перестал работать, то это, вероятно, потому что у Вас есть другие устройства камеры, виртуальные или в других отношениях существующие в Вашем ПК /dev каталог.

Для фиксации этого работать ls /dev/video* и отметьте, сколько там. Затем используйте тот с большим числом после него в двух командах в тесте. Это сделано как так:

  • Выполненный sudo modprobe -r v4l2loopback

  • Затем выполненный ls /dev/video* и отметьте существующие камеры как /dev/video0 /dev/video1 /dev/video2 ... etc

  • Затем выполненный:

sudo modprobe v4l2loopback exclusive_caps=1 card_label="MyLaptopCam:MyLaptopCam"
  • Затем выполненный снова ls /dev/video* новая камера /dev/video3 будет добавлен как так /dev/video0 /dev/video1 /dev/video2 /dev/video3

  • Используйте новую камеру в последних двух командах вместо /dev/video0 как так:

nc Laptop_IP 9999 | ffmpeg -i /dev/stdin -codec copy -f v4l2 /dev/video3

и

ffplay /dev/video3

Поиск и устранение неисправностей:

Протестировать, если поток проходит, если у Вас есть проблемы с v4l2loopback, можно работать на ПК:

nc Laptop_IP 9999 | mplayer -

или

nc Laptop_IP 9999 | vlc -

или

nc Laptop_IP 9999 | ffplay -

Использовать его с Google Hangouts:

Благодаря @janjaromirhorak, как обозначено в этом комментарии, заключенном в кавычки ниже.

Могло бы быть больше способов сделать это, но это было моим методом в Mozilla Firefox: Откройте Google Hangouts, запустите videocall и позвольте оба запроса на микрофон и внутреннюю веб-камеру. Затем нажмите значок зубчатого колеса для открытия диалогового окна настроек, которое позволяет Вам выбирать, какую веб-камеру Вы хотите использовать. Выберите свою виртуальную веб-камеру, примите запрос разрешения и нажмите "сделанный". Также эта установка, кажется, сохраняется к будущему videocalls - в следующий раз, когда я уже нашел свою виртуальную веб-камеру выбранной и работа.:)

9
ответ дан 25 April 2020 в 10:46

Таким образом, Вы хотите одолжить камеру для другой машины. Может быть поздним, но этот вопрос, кажется, имеет решение.

Обычная проблема, которую я вижу, большинство приложений конференции/чата, действительно только поддерживает устройства локальной камеры (никакая сетевая или локальная потоковая передача файла).

Ваш пропускают только одну часть:

v4l2loopback

  1. Создайте устройство закольцовывания V4L2 в Рабочем столе (PC2)
  2. В Ноутбуке (PC1) используйте GStreamer (gst-launch-1.0), ffmpeg, vlc... к потоковому видео от устройства бегунка до сети
  3. В Рабочем столе (PC2) используйте GStreamer (gst-launch-1.0), ffmpeg, vlc... чтобы получить и передать видео по каналу к theloopback устройству

Затем приложения конференции/чата по набору в Рабочем столе (PC2) используют устройство закольцовывания V4L2, созданное на шаге (1) как камера.

Ссылки:

3
ответ дан 25 April 2020 в 10:46

vlc

Используя vlc один способ достигнуть этой цели.

Шаг 1 - установка

Устанавливать VLC на Debian, Ubuntu или Linux Mint:

$ sudo apt-get install vlc

Для установки VLC на Fedora сначала включите свободный репозиторий Fusion об/мин, затем работайте:

$ sudo yum install vlc

Для установки VLC на CentOS или RHEL 6 сначала откройте репозиторий EPEL и затем используйте следующие команды:

$ cd /etc/yum.repos.d/
$ sudo wget http://pkgrepo.linuxtech.net/el6/release/linuxtech.repo
$ sudo yum install vlc

Шаг 2 - проверяет веб-камеру в VLC

Удостоверьтесь, что Ваша веб-камера обнаруживается Вашей системой Linux и VLC.

Необходимо будет знать имя веб-камеры этого. В примере ниже, называют веб-камеру /dev/video0.

$ ls /dev/video*
/dev/video0

Затем необходимо протестировать видео от веб-камеры. Вот команда, которую необходимо использовать, не забывайте заменять "video0" названием устройства.

$ vlc v4l2:///dev/video0

Если Ваша веб-камера успешно обнаруживается VLC, необходимо смочь видеть видеопоток.

Шаг 3 - настраивает потоковую передачу веб-камеры на VLC

Вы успешно обнаружили свою веб-камеру в VLC, затем настраивает потоковую передачу веб-камеры.

В этом примере веб-камера передается потоком по HTTP в формате WMV. Для конфигурирования VLC для потоковой передачи веб-камеры сначала запустите VLC.

$ vlc

В VLC меню выбирают "Streaming".

На экране выбирают название Вашей веб-камеры или аудиоустройства, например,/dev/video0 для веб-камеры и hw:0,0 для аудио. Отметьте флажок "Show more options" и обратите внимание на строки значения в полях "MRL" и "Edit Options". Эти строки будут использоваться позже в учебном руководстве. Нажмите кнопку "Stream".

Проверьте источник видеосигнала, например, v4l2:///dev/video, и нажмите "Next" для продолжения.

Выберите место назначения, т.е. метод/цель потоковой передачи, потоковой передачи веб-камеры. В нашем примере мы выбираем HTTP из выпадающего списка и нажимаем "Add".

Затем, укажите номер порта и путь потокового сервиса. Для номера порта, типа 8080; мы предполагаем, что номер порта не занят для пути - "/stream.wmv". Поскольку транскодирование выбирает профиль "Video - WMV + WMA (ASF)" из выпадающего списка. Нажмите "Next".

Следующие отображения на экране автоматически генерировали потоковую выходную строку. Обратите внимание на него и нажмите кнопку "Stream".

На данном этапе VLC должен запустить потоковое видео с Вашей веб-камеры по HTTP. Потоковая передача трафика отправляется непосредственно в localhost в номере порта TCP 8080, таким образом, Вы не сможете видеть что-либо в окне VLC.

Чтобы проверить, что VLC работает правильно в порте TCP 8080, выполняет следующую команду и ищут VLC.

$ sudo netstat -nap | grep 8080

Шаг 4 - наблюдает потоковое видео от веб-камеры

После того как сервер потоковой передачи начинает работать, веб-камера, в которой живой канал доступен http://:8080/stream.wmv

Можно использовать плеер VLC или MPlayer для доступа к каналу веб-камеры следующим образом.

$ vlc http://:8080/stream.wmv
$ mplayer http://:8080/stream.wmv

При тестировании канала от того же хоста используйте петлевой адрес 127.0.0.1 вместо этого.

2
ответ дан 25 April 2020 в 10:46

Вы могли попытаться использовать DroidCam. У меня нет ПК с ноутбуком в одном месте, таким образом, я только что протестировал его на телефоне на базе Android и Ubuntu 19.10. Существует Параметр сервера Wi-Fi, существующий, Вы могли попробовать в своем случае.

Установка для Ubuntu:

sudo apt install linux-headers-`uname -r`
sudo apt install v4l2loopback-dkms v4l2loopback-utils
sudo modprobe v4l2loopback
wget https://www.dev47apps.com/files/600/droidcam-64bit.tar.bz2 -O droidcam.tar.bz2
tar xjvf droidcam.tar.bz2
cd droidcam-64bit/
sudo ./install
echo -e '[Desktop Entry]\n Version=1.0\n Name=DroidCam\n Exec=droidcam\n Icon=droidcam\n Type=Application\n Categories=Application' | sudo tee /usr/share/applications/droidcam.desktop

Вы могли выполнить его от терминала: droidcam &

enter image description here

Разрешение его в брандмауэре:

sudo ufw allow 4747

enter image description here

1
ответ дан 25 April 2020 в 10:46

Если я понимаю правильно, Вы означаете иметь видеоустройство на одном компьютере, получая вход от физического устройства на другом. Даже если у меня нет здесь ресурсов для тестирования его, я предполагаю, что это возможно. Я не забываю некоторое время назад делать что-то подобное, но не с видео. Согласно этому (также это; оба старых сообщения), видео может также быть сделано.

Таким образом,

Решения и комментарии в тех сообщениях использование dd, ffmpeg или netcat (nc) вывести/передать видео потоком, и mplayer или vlc посмотреть туннелированное видео, и даже передающий по каналу с tee.

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

Создание локального устройства, для доступа к ней точно, как будто веб-камера была соединена локально, не было протестировано. Это (старое сообщение) предполагает, что использование SSHFS могло бы добиться цели. YMMV, в зависимости от того, какое использование Вы предназначаете для туннелированного видео.

Ссылки

  1. Передача по каналу видеоустройства по SSH или tcptunnel?

  2. Я могу передать/dev/video по каналу по ssh

  3. Наблюдение удаленной веб-камеры по передаче по каналу и SSH?

  4. SSHFS

1
ответ дан 25 April 2020 в 10:46

Мое предложение немного отличалось бы, так как все опции уже даны.

  1. Установите TeamViewer и используйте его для соединения с ноутбуком, проблема с этой идеей состоит в том, что на камеру ноутбука нужно указать на Вас, даже когда Вы используете Настольный ПК. Это будет работать, даже если оба компьютера не будут в той же сети. TeamViewer имеет бесплатное (некоммерческое) использование и заплатил (коммерческое) использование.

  2. Используйте удаленное соединение, можно использовать удаленное соединение на компьютере Dekstop с Ubuntu.

0
ответ дан 25 April 2020 в 10:46

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

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