Я хочу использовать веб-камеру на своем ноутбуке в качестве видеоустройства на моем компьютере, чтобы использовать его для видеоконференций и т. д.
Так что я не хочу просто транслировать видео. Я действительно хочу "транслировать" все устройство по сети.
Итак, два компьютера, один транслирует поток со своей веб-камеры, другой принимает это как видеоустройство.
Оба компьютера работают в обычном режиме Ubuntu 18.04, однако я скоро обновлюсь до 20.04
Предполагая, что обе машины подключены к сети и ПК может достичь IP-адреса портативного компьютера. Выполните следующие действия:
Установите v4l-utils
и ffmpeg
, запустив:
sudo apt install v4l-utils ffmpeg
Установите matroska
медиа-контейнер, например :
sudo apt install libmatroska6v5
Выполните следующую команду, чтобы открыть прослушиватель 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"
Протестируйте это :
IP-адрес ноутбука
на IP-адрес портативного компьютера): nc Laptop_IP 9999 | ffmpeg -i /dev/stdin -codec copy -f v4l2 /dev/video0
ffplay /dev/video0
Если вы видите свое лицо, значит, он работает.
Микрофон?
Чтобы передать выход микрофона с портативного компьютера на ПК, выполните следующие действия. эти шаги:
На портативном компьютере :
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
Проверьте микрофон и узнайте, что будет задержка звука, поскольку сжатие не используется.
Примечание:
Если тест не прошел, то это, вероятно, связано с тем, что у вас есть другие виртуальные камеры или другие камеры, присутствующие на вашем ПК / 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, начните видеозвонок и разрешите оба запросы на микрофон и внутреннюю веб-камеру. Затем щелкните шестеренку значок, чтобы открыть диалоговое окно настроек, в котором можно выбрать веб-камеру. вы хотите использовать. Выберите свою виртуальную веб-камеру, примите разрешение запрос и нажмите "Готово". Также этот параметр, похоже, сохранится в будущем видеозвонки - в следующий раз я обнаружу, что моя виртуальная веб-камера уже выбрана и за работой. :)
Итак, вы хотите одолжить камеру для другого компьютера. Может быть поздно, но этот вопрос, похоже, имеет решение.
Обычная проблема, которую я вижу, большинство приложений для конференций / чатов поддерживают только устройства с локальной камерой (без сетевой или локальной потоковой передачи файлов).
Вам не хватает только одного элемента:
v4l2loopback
gst-launch-1.0
), ffmpeg, vlc, ... чтобы потоковое видео с камеры в сеть gst-launch-1.0
), ffmpeg, vlc, ... для получения и передачи видео на устройство обратной связи Затем установите приложения конференции / чата на рабочем столе (ПК2), используя устройство обратной связи V4L2, созданное на шаге (1), в качестве камеры.
Ссылки:
Использование vlc является одним из способов для достижения этой цели.
Чтобы установить VLC в Debian, Ubuntu или Linux Mint:
$ sudo apt-get install vlc
Чтобы установить VLC в Fedora, сначала включите бесплатный репозиторий RPM 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
Убедитесь, что ваша веб-камера обнаружена вашей системой Linux и VLC.
Для этого вам необходимо знать имя веб-камеры. В приведенном ниже примере веб-камера называется / dev / video0
.
$ ls /dev/video*
/dev/video0
Затем вам нужно протестировать видео с веб-камеры. Вот команда, которую вам нужно использовать, не забудьте заменить «video0» на имя вашего устройства.
$ vlc v4l2:///dev/video0
Если ваша веб-камера успешно обнаружена VLC, вы сможете увидеть свой видеопоток.
Вы успешно обнаружили свою веб-камеру в VLC, далее следует настроить потоковую передачу с веб-камеры.
В этом примере веб-камера транслируется по HTTP в формате WMV. Чтобы настроить VLC для потоковой передачи с веб-камеры, сначала запустите VLC.
$ vlc
В меню VLC выберите «Streaming».
На экране выберите имя вашей веб-камеры или аудиоустройства, например, / dev / video0 для веб-камеры и hw: 0, 0 для аудио. Установите флажок «Показать дополнительные параметры» и запишите строки значений в полях «MRL» и «Параметры редактирования». Эти строки будут использоваться позже в учебнике. Нажмите кнопку «Поток».
Проверьте источник видео, например, v4l2: /// dev / video, и нажмите «Далее», чтобы продолжить.
Выберите место назначения, то есть метод / цель потоковой передачи потоковой передачи с веб-камеры . В нашем примере мы выбираем HTTP из раскрывающегося списка и нажимаем «Добавить».
Затем указываем номер порта и путь к потоковой службе. Для номера порта введите 8080; мы предполагаем, что номер порта не занят, для пути - "/stream.wmv". Для перекодирования выберите профиль «Видео - WMV + WMA (ASF)» из раскрывающегося списка. Нажмите «Далее».
На следующем экране отображается автоматически сгенерированная строка вывода потока. Запишите это и нажмите кнопку «Stream».
На этом этапе VLC должен начать потоковую передачу видео с вашей веб-камеры через HTTP. Потоковый трафик отправляется непосредственно на localhost на TCP-порт с номером 8080, поэтому вы не сможете ничего увидеть в окне VLC.
Чтобы убедиться, что VLC правильно работает на TCP-порту 8080, выполните следующую команду и посмотрите для VLC.
$ sudo netstat -nap | grep 8080
После запуска потокового сервера прямая трансляция с веб-камеры станет доступна по адресу
http: //: 8080 / stream.wmv
Вы можете использовать VLC player или MPlayer для доступа к каналу веб-камеры следующим образом.
$ vlc http://:8080/stream.wmv
$ mplayer http://:8080/stream.wmv
Если вы тестируете канал с того же хоста, используйте вместо него адрес обратной связи 127.0.0.1.
Вы можете попробовать использовать DroidCam. У меня нет ПК с ноутбуком в одном месте, поэтому я только что протестировал его на телефоне Android и Ubuntu 19.10. Есть вариант Wifi Server, который вы можете попробовать в вашем случае.
Установка для 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 &
Разрешение его в брандмауэре:
sudo ufw allow 4747
Для 20.04 эта установка droidcam гид не мог работать. Но я нашел другой способ, описанный здесь .
Если я правильно понимаю, вы имеете в виду, что видеоустройство на одном компьютере получает входные данные от физического устройства на другом. Даже если у меня нет ресурсов для тестирования, я думаю, это возможно. Я помню, как некоторое время назад делал нечто подобное, но не с видео. Согласно this (также this ; обе старые записи), видео также можно делать.
В итоге
Решения и комментарии в этих сообщениях используют dd
, ffmpeg
или netcat ( nc
) для создания дампа / потоковой передачи видео и mplayer
или vlc
для просмотра и туннелирования видео. даже трубопровод с тройником
.
Если вы сначала попробуете любое из решений, доступных в сообщениях выше, и сообщите обратную связь, это будет хорошей отправной точкой для продвижения вперед.
Создание локального устройства, для доступа к нему точно так же, как если бы веб-камера была подключена локально, не тестировалось. Этот (старый пост) предполагает, что использование SSHFS может помочь. YMMV, в зависимости от того, что вы собираетесь использовать для туннелированного видео.
Ссылки
Мое предложение было бы немного другим, поскольку все параметры уже указаны.
Установите TeamViewer и используйте его для подключения к ноутбуку, проблема Согласно этой идее, камера ноутбука должна быть направлена на вас, даже когда вы используете настольный компьютер. Это будет работать, даже если оба компьютера не находятся в одной сети. TeamViewer имеет бесплатное (некоммерческое) и платное (коммерческое) использование.
Используйте удаленное соединение Вы можете использовать удаленное соединение на вашем компьютере Dekstop с Ubuntu.