Chciałbym spróbować użyć Cheese w Google+ Hangouts i podobnych konfiguracjach, i chcę wiedzieć, czy możliwe jest korzystanie z kamery przez dwa procesy w tym samym czasie. Nie próbowałem tego jeszcze, ale pomyślałem, że zapytam.
Czy to możliwe?
Chciałbym spróbować użyć Cheese w Google+ Hangouts i podobnych konfiguracjach, i chcę wiedzieć, czy możliwe jest korzystanie z kamery przez dwa procesy w tym samym czasie. Nie próbowałem tego jeszcze, ale pomyślałem, że zapytam.
Czy to możliwe?
Odpowiedzi:
Właśnie próbowałem. Ciekawe wyniki.
Mam skype, ser i zabawkę z kamery internetowej oraz spotkania (które działają) i wypróbowałem je razem.
Wyniki:
Nie możesz używać tej samej kamery na dwóch rzeczach jednocześnie.
Ser (pracujący) + zabawka kamery internetowej (nie działa) + Skype (mały, prawy górny. Nie działa).

Możesz korzystać z 2 kamer internetowych na 2 rzeczach. (Ser + zabawka kamery internetowej).

Hangouty (nie działa) + ser (działa)

Hangouty (działające samodzielnie).

Ser złamany, gdy pierwszy raz otworzyłem Hangouts. To samo zrobiło z innymi, ale mój internet jest zbyt wolny, aby przesyłać każdy zrzut ekranu (i wątpię, czy docenisz ponad 30 zrzutów ekranu) ...

Próbowałem nawet utworzyć symboliczny link /dev/video0i zapisać go /devjako video2. To nie zadziałało.
Nie mogę również uruchomić 2 procesów serowych jednocześnie.
Gdybyś musiał, radziłbym zrobić to na pełnym ekranie i nagrać 2 ekrany. Wątpię, czy to zadziałałoby na to, czego chcesz.
Obecnie na GitHub istnieje projekt, który może pokazywać nie tylko dwa, ale nieskończoną (ograniczoną tylko pojemnością systemu) liczbę urządzeń wideo z jednego źródła.
Projekt nazywa się v4l2loopback. (Sprawdź link i przewiń w dół, aby wyświetlić README, aby uzyskać instrukcje.)
Możesz zainstalować v4l2loopback, klonując GitHub i uruchamiając następujące polecenia:
$ git clone https://github.com/umlaeute/v4l2loopback.git
$ cd v4l2loopback
$ make
$ sudo make install
Aby dowiedzieć się, jak używać go z GStreamer, FFmpeg, MPlayer i Skype, sprawdź ich małą wiki . Mamy nadzieję, że znajdziesz odpowiednie ustawienia odpowiadające Twoim potrzebom.
Życzymy udoskonalania!
teenarzędzia, które nie czeka na stdindokończenie karmienia. Nie zdziwiłbym się, gdyby faktycznie używał binarnego odpowiednika teez bardziej skalowalnym wsparciem pod maską.
Na podstawie odpowiedzi @The Eye
Najpierw zainstalowałem pakiety gstreamer na 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
Otrzymałem komunikat ostrzegawczy, jak tutaj na Ubuntu 18.04 LTS https://github.com/umlaeute/v4l2loopback/issues/139 (ale nie powstrzymało mnie to przed załadowaniem sterownika v4l2loopback)
$ sudo depmod -a
Mam tylko 1 kamerę internetową na moim laptopie / dev / video0 i chciałem uzyskać 2 strumienie z tego samego sprzętu. Na podstawie https://github.com/umlaeute/v4l2loopback/blob/master/README.md
$ modprobe v4l2loopback devices=2
Powinny istnieć /dev/video1i /dev/video2tworzone, zakładając, że /dev/video0było jedynym urządzeniem wideo.
Teraz uruchamiam następujące w jednym oknie terminala
gst-launch-1.0 v4l2src device=/dev/video0 ! tee name=t ! queue ! v4l2sink device=/dev/video1 t. ! queue ! v4l2sink device=/dev/video2
Otwieram jeszcze 2 zakładki
W pierwszej zakładce
gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink
W drugiej zakładce
gst-launch-1.0 v4l2src device=/dev/video2 ! videoconvert ! ximagesink
Teraz powinieneś zobaczyć 2 strumienie wideo
AKTUALIZACJA
Nawet jeśli używam tego samego /dev/video1urządzenia wiele razy, to wszystko daje mi tyle strumieni. przykład.
W pierwszej zakładce
gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink
W drugiej zakładce
gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink
W trzeciej zakładce
gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink
daje mi trzy strumienie.
pactl list | grep -A2 'Source #'a następnie użyj tego urządzenia w następującym potoku (może również uruchamiać wiele wystąpień potoku)gst-launch-1.0 pulsesrc device=alsa_input.<name of device> ! autoaudiosink
Odpowiedź brzmi „nie”, może… Biblioteka „Video 4 Linux” wykrywa, czy urządzenie jest używane i nie inicjuje się. Jednak; jeśli chcesz pobrać libv4l-dev i edytować go ręcznie, możesz edytować kod, aby pozbyć się tego sprawdzenia, a następnie po prostu go ponownie skompilować. Wyobrażam sobie, że można to uruchomić, ale byłoby to bardzo niestabilne. Może warto jednak to sprawdzić.
TLDR: Wszystko jest możliwe, jeśli jesteś programistą z przydatnym smarem łokciowym. Nie chcesz iść tak daleko? W takim razie nie; to nie jest możliwe.