Я хотел бы попробовать использовать Cheese в Google+ Hangouts и аналогичные конфигурации, и я хотел бы знать, возможно ли использование веб-камеры двумя процессами для одновременного доступа к веб-камере. Я еще не пробовал, но прежде чем я решил, я бы спросил.
Итак, возможно ли это?
Ну, я только что попробовал. Интересные результаты.
У меня есть скайп, сыр, игрушка для веб-камеры и тусовки (все работают), и я попробовал их вместе.
Результаты:
Нельзя использовать одну и ту же веб-камеру одновременно для двух вещей.
Сыр (работает) + игрушка веб-камеры (не работает) + Skype (маленький, справа вверху. Не работает).
Вы можете использовать 2 веб-камеры на 2 вещи. (Сыр + Игрушка веб-камеры).
Hangouts (не работает) + сыр (работает)
Hangouts (работает самостоятельно) .
Сыр сломался, когда я впервые открыл Hangouts. Он сделал то же самое с остальными, но мой интернет слишком медленный, чтобы загружать каждый скриншот (и я сомневаюсь, что вы оцените более 30 скриншотов) ...
Я даже пытался создать символическую ссылку на /dev/video0
и сохранить ее в /dev
как video2
. Это не сработало.
Я также не могу запустить 2 процесса сыра одновременно.
Изображение моего сада, чтобы подбодрить вас, поскольку ответ - нет. Сейчас очень круто: я могу качаться (на качелях), прыгать и приземляться в детский бассейн. Взятые с сыром.
Если бы вам пришлось, я бы посоветовал сделать его на весь экран и сделать 2 записи экрана. Я сомневаюсь, что это сработает для того, что вы хотите.
Ответ «нет», возможно ... Библиотека «Видео 4 Linux» определяет, используется ли устройство, и не запускается. Тем не мение; Если вы хотите скачать libv4l-dev и отредактировать его вручную, вы можете отредактировать код, чтобы избавиться от этой проверки, а затем просто перекомпилировать его. Я думаю, вы могли бы заставить это работать, но это было бы крайне нестабильно. Может быть стоит проверить хотя.
TLDR: все возможно, если вы программист, у которого есть немного смазки для локтя. Не хотите идти так далеко? Тогда нет; это невозможно.
На основе @The Глазного ответа
Я сначала установил gstreamer пакеты на Ubuntu 18.04 https://gstreamer.freedesktop.org/documentation/installing/on-linux.html
$ git clone https://github.com/umlaeute/v4l2loopback.git
$ cd v4l2loopback
$ make
$ sudo make install
Я получил предупреждающее сообщение как здесь на Ubuntu 18.04 LTS https://github.com/umlaeute/v4l2loopback/issues/139 (но это не препятствовало тому, чтобы я загрузил v4l2loopback драйвер),
$ sudo depmod -a
У меня просто есть 1 веб-камера на моем ноутбуке/dev/video0, и я хотел получить 2 потока от тех же аппаратных средств. На основе https://github.com/umlaeute/v4l2loopback/blob/master/README.md
$ modprobe v4l2loopback devices=2
Должен теперь быть /dev/video1
и /dev/video2
созданное принятие /dev/video0
было единственное видеоустройство.
Теперь я выполняю следующее в одном окне терминала
gst-launch-1.0 v4l2src device=/dev/video0 ! tee name=t ! queue ! v4l2sink device=/dev/video1 t. ! queue ! v4l2sink device=/dev/video2
Я открываю 2 больше вкладок
На первой вкладке
gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink
На второй вкладке
gst-launch-1.0 v4l2src device=/dev/video2 ! videoconvert ! ximagesink
Теперь нужно видеть 2 видеопотока
ОБНОВЛЕНИЕ
Даже если я использую то же /dev/video1
устройство многократно, которое все это дает мне, которого многие передают потоком. пример.
На первой вкладке
gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink
На второй вкладке
gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink
На третьей вкладке
gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink
дает мне три потока.
В настоящее время существует проект на GitHub, который может показать не только два, но большое количество (ограниченный только системной мощностью) количество видеоустройств из единственного источника.
Проект называют v4l2loopback
. (Проверьте ссылку и прокрутите вниз для просмотра README для инструкций.)
Можно установить v4l2loopback
путем клонирования его GitHub и выполнения этих команд:
$ git clone https://github.com/umlaeute/v4l2loopback.git
$ cd v4l2loopback
$ make
$ sudo make install
Для образцов о том, как использовать его с GStreamer, FFmpeg, MPlayer и Skype, проверяют их маленькую Wiki. Надо надеяться, Вы могли найти, что правильные настройки соответствовали Вашим потребностям.
Любите настраивать вокруг!
Я успешно использовал OBS Open Broadcast Software после следующих шагов:
Установите устройство обратной связи video4linux (v4l2loopback, как предложено другими)
(я использую Ubuntu 18.04, и мне пришлось установить более новая версия, как предлагается здесь: https://github.com/CatxFish/obs-v4l2sink/issues/30 )
Установить OBS
(Мне снова пришлось установить более новую версию и ffmpeg согласно этим инструкциям: https://itsubuntu.com/install-obs-in-linux-operating-system/ )
Установите OBS-v4lsink
(перейдите на https: //github.com/CatxFish/obs-v4l2sink, затем в "релизы", загрузите и установите файл .deb, версия 0.1.0 была единственным файлом deb там)
Запустите v4l2loopback:
sudo modprobe v4l2loopback
В OBS и выберите источник
В разделе «Источники» нажмите «+», дайте вашему новому слою имя, выберите свою (настоящую) веб-камеру
В OBS выберите приемник
В верхнем меню перейдите в инструменты> v42lsink, выберите виртуальную веб-камеру (/ dev / videoX, где X - максимальное доступное число), нажмите кнопку «Пуск»
. В ваших приложениях выберите виртуальную веб-камеру.
У меня были Zoom и Discord с использованием одного и того же нового виртуальная веб-камера, а также возможность записи с камеры с помощью OBS
Поскольку нет ответа с помощью ffmpeg
, Вот оно.
Хотя v4l2loopback
создает виртуальные видеоустройства, по умолчанию они ни с чем не связаны. Чтобы сделать их полезными, вы должны отправлять им потоки через внешние приложения, такие как ffmpeg
.
Сначала загрузите модуль
$ sudo modprobe v4l2loopback exclusive_caps=1 video_nr=5 #creates `/dev/video5`
, а затем отправьте входные данные веб-камеры на виртуальное устройство.
$ ffmpeg -i /dev/video0 -f v4l2 -codec:v rawvideo -pix_fmt yuv420p /dev/video5
Теперь /dev/video5
работает как псевдо-веб-камера. Обратите внимание, что в отличие от физической веб-камеры, к одному виртуальному видеоустройству можно получить доступ из нескольких приложений одновременно. Таким образом, в этом случае вам не нужно создавать много виртуальных устройств.
Я написал сценарий, чтобы обернуть эти шаги: v4l2_webcam - GitHub.
Вы можете отправить любое (необработанное) видео на виртуальное видеоустройство. Это означает, например, что можно использовать сложно смешанное видео OBS в качестве входа камеры для веб-встречи (например, Skype, Zoom и т. Д.).
Вот относительно сложный, но очень практичный пример: