Чи можливі два процеси одночасно для доступу до веб-камери?


14

Я хотів би спробувати використовувати сир у Google+ Hangouts та подібних конфігураціях, і хотілося б дізнатися, чи можливо веб-камера використовувати два процеси одночасно для доступу до веб-камери. Я ще не пробував цього, але перш ніж зробити, я зрозумів, що запитаю.

Отже, чи можливо?

Відповіді:


6

Ну я просто спробував. Цікаві результати.

У мене є іграшка для скайпу, сиру, веб-камери та тусовки (які всі працюють) і спробували їх разом.

Результати:

Не можна використовувати одну і ту ж веб-камеру на двох речах одночасно.

Сир (Робочий) + Іграшка для веб-камери (не працює) + Скайп (Маленький, праворуч. Не працює).

введіть тут опис зображення

Ви можете використовувати 2 веб-камери на 2 речі. (Сир + іграшка для веб-камери).

введіть тут опис зображення

Hangouts (не працює) + сир (працює)

введіть тут опис зображення

Hangouts (працюю над собою).

введіть тут опис зображення

Сир зламався, коли я першим відкрив Hangouts. Так само було і з іншими, але мій Інтернет занадто повільний, щоб завантажувати кожен знімок екрана (і я сумніваюся, ви оціните 30+ скріншоти) ...

введіть тут опис зображення

Я навіть намагався створити символічне посилання /dev/video0і зберегти його /devяк video2. Це не спрацювало.

Я також не можу запустити 2 сирні процеси відразу.

Якщо вам доведеться, я б радив зробити його на весь екран і зробити 2-х екранні записи. Я сумніваюся, що це буде працювати для того, що ви хочете, хоча.


Дякую! Це стисло і говорить мені, що я повинен знати. Гарний сад btw! Баунті буде присвоєно після закінчення терміну (21 годин). Потім я видалю цей коментар.
RolandiXor

@Mew Це була моя остання спроба змусити її працювати :)
Тім

@Tim Наступна відповідь - це саме те, що ви шукаєте, якщо ви приїхали сюди, тому що вам потрібен спосіб зробити це.
Ісія Медоуз

1
@impinball nope, просто знайшов це цікаве питання!
Тім

14

На щастя, тепер ТАК!

В даний час на GitHub існує проект, який може показати не лише два, а нескінченну (обмежену лише ємністю системи) кількість відеопристроїв з одного джерела.

Проект називається v4l2loopback. (Перевірте посилання та прокрутіть униз, щоб переглянути інструкції "ПРОЧИТАТИ".)

Ви можете встановити v4l2loopback, клонувавши його GitHub і запустивши ці команди:

$ git clone https://github.com/umlaeute/v4l2loopback.git
$ cd v4l2loopback
$ make
$ sudo make install

Приклади

Щоб дізнатися, як використовувати його з GStreamer, FFmpeg, MPlayer та Skype, перегляньте їх невеликі вікі . Сподіваємось, ви змогли знайти правильні налаштування під свої потреби.

Насолоджуйтесь виправленням навколо!


1
Віртуальні пристрої - це одна з областей, де Linux (і * nix, з цього приводу) світить. У Windows набагато складніше навіть написати основну teeутиліту, яка не чекає, поки stdinзакінчить її подачу. Я не був би здивований, якщо це насправді використовує двійковий еквівалент teeз більш масштабованою підтримкою під капотом.
Ісія Медоуз

Хоча це відповідає на питання, було б краще включити сюди частини посилання та надати посилання для довідки, щоб ми мали кілька прикладів - наприклад, зробіть 2 пристрої з 1. Які варіанти для цього є? І чи можна (як сказано в вимогах ОП) використовувати з Google Hangouts? Я також просто перевірив його за допомогою Skype, і він, здається, не працює. Зараз ми версії 4.3, а не 4.0 ...
Тім,

2
Мені доведеться перевірити це, коли моя інша система повернеться. Я, мабуть, дам додаткову суму.
RolandiXor

3
Це фактично є частиною ubuntu - немає необхідності в git.
nbubis

Дійсно, це тепер упаковано для Ubuntu / Debian як v4l2loopback-utils Не потрібно самостійно складати це
Арно Жансен

3

На основі відповіді @The Eye

Я вперше встановив пакети 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/isissue/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

дає мені три потоки.


До речі якщо чия камера має аудіо потім фільтр аудіо з допомогою команди pactl list | grep -A2 'Source #'потім використовувати цей пристрій в наступному трубопроводі (можна запускати кілька примірників конвеєра теж)gst-launch-1.0 pulsesrc device=alsa_input.<name of device> ! autoaudiosink
enthusiasticgeek

Це працює набагато краще, ніж рішення FFmpeg, оскільки я не міг змусити FFmpeg скопіювати h264, не розшифрувавши його, що призвело до того, що він завжди використовував процесор, навіть коли його ніхто не слухав
Fabian N.

2

Відповідь "ні", можливо ... Бібліотека "Video 4 Linux" визначає, чи використовується пристрій, і не буде ініціюватися. Однак; якщо ви хочете завантажити libv4l-dev і відредагувати його вручну, ви можете відредагувати код, щоб позбутися від цієї перевірки, а потім просто перекомпілювати його. Я думаю, ви могли б змусити це працювати, але це було б надзвичайно нестабільно. Можливо, варто перевірити, хоча.

TLDR: Все можливе, якщо ви програміст, який підручно змащує жировики. Не хочете так далеко? Тоді ні; це неможливо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.