Przekieruj prawdziwą kamerę internetową do wirtualnej kamery internetowej za pośrednictwem terminala

15

Czy istnieje sposób przekierowania prawdziwej kamery internetowej do wirtualnej kamery internetowej z wiersza poleceń, na przykład za pomocą v4l2loopbackmodułu z ffmpeg?

Detale

Mam starą kamerę internetową, która działa z większością programów (vlc, ser itp.), Ale nie z innymi (Skype).

Możliwym obejściem takiego oprogramowania jest przekierowanie go do wirtualnej kamery internetowej za pomocą v4l2loopbackmodułu, tak jak robi to Webcamoid , ale muszę to zrobić z wiersza poleceń, na przykład za pośrednictwem ffmpeg.

Jestem pewien, że jest to ffmpegrównież możliwe , ale ponieważ prawdziwe kamery internetowe rzadko są przekierowywane do wirtualnych, nie znalazłem żadnych przykładów online (jedyne przykłady, które znalazłem, takie jak ten , przekierowują zrzuty ekranu lub istniejące filmy wideo do wirtualnej kamery internetowej) .

Kubuntuer82
źródło
1
@ LordNeckbeard Odpowiedzi mają coś wspólnego, ale pytania są bardzo różne. Ten OP prosi o przesłanie nagranego wideo ( input.mp4) na istniejące urządzenie fizyczne , a odpowiadający sugeruje zamiast tego użycie v4l2loopback. Tutaj mówimy o wysłanie na żywo prawdziwą kamerę do wirtualnej kamery, ponieważ może to sprawić, że kamera pośrednio bardziej zgodne z niektórych aplikacji (np Skype), które nie rozpoznają go inaczej. W rzeczywistości odpowiedź na to pytanie sugeruje użycie czegoś, ffmpeg -i input.mp4czego nie szukałem tutaj.
Kubuntuer82
1
@ LordNeckbeard i ta odpowiedź pokazuje również, jak złapać pulpit, który nie tylko nie szukałem tutaj, ale jest również bardzo podobny do tego postu, o którym już wspomniałem w moim pytaniu. Szukałem czegoś innego, tj. Przekierowania innej kamery internetowej zamiast pulpitu lub pliku (jak mówię również w pytaniu). Rozumiem, że rozwiązania oparte są na tym samym oprogramowaniu, ale ponieważ pytania są bardzo różne, myślę, że nadal warto dzielić się tym z ludźmi, którzy zmagają się z tym konkretnym problemem.
Kubuntuer82

Odpowiedzi:

19

Na podstawie tej odpowiedzi (już wspomnianej w pytaniu) myślę, że znalazłem rozwiązanie samodzielnie i działa ono ze Skype!

Załóżmy, że znajduje się prawdziwa kamera internetowa /dev/video0. Kiedy biegniesz

modprobe v4l2loopback

moduł tworzy drugą (wirtualną) kamerę internetową, na przykład w /dev/video1. W tym momencie wystarczy wykonać:

ffmpeg -i /dev/video0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video1

nowa wirtualna kamera internetowa jest gotowa do użycia i wybierania jej również ze Skype.

Kubuntuer82
źródło