v4l2loopback w Linuksie: instalacja, trwałość i typowe błędy

Linux nie ma wbudowanej kamery wirtualnej. Aplikacje otwierają urządzenie takie jak /dev/video0 i odczytują z niego klatki, a jądro zakłada, że stoi za nim prawdziwy sprzęt. v4l2loopback to moduł jądra, który tworzy urządzenie zachowujące się jak kamera, ale zasilane przez oprogramowanie.

Jest podstawą każdego scenariusza z kamerą wirtualną w Linuksie: OBS, potoki ffmpeg i CamLooper zapisują do urządzenia pętli zwrotnej. Oto jak skonfigurować go poprawnie.

Instalacja

Zainstaluj pakiet DKMS, aby moduł był automatycznie przebudowywany przy każdej aktualizacji jądra:

# Debian / Ubuntu
sudo apt install v4l2loopback-dkms

# Fedora / RHEL
sudo dnf install v4l2loopback

# Arch
sudo pacman -S v4l2loopback-dkms

DKMS ma tu znaczenie. Bez niego moduł jest kompilowany dla jądra obecnego w chwili instalacji, a twoja kamera wirtualna po cichu przestaje działać po następnej aktualizacji jądra.

Ładowanie modułu

sudo modprobe v4l2loopback

Sprawdź, czy urządzenie istnieje:

lsmod | grep v4l2loopback
ls -l /dev/video*

Przydatne opcje przy ładowaniu:

sudo modprobe v4l2loopback \
  devices=1 \
  video_nr=10 \
  card_label="Virtual Camera" \
  exclusive_caps=1
  • video_nr=10 przypina urządzenie do /dev/video10, aby nie kolidowało z prawdziwą kamerą
  • card_label ustawia nazwę wyświetlaną przez aplikacje na liście kamer
  • exclusive_caps=1 to opcja kluczowa — sprawia, że urządzenie ogłasza zdolność przechwytywania tylko wtedy, gdy coś do niego zapisuje. Chrome, Firefox i kilka aplikacji opartych na Electronie ignorują urządzenia pętli zwrotnej bez niej, i właśnie dlatego kamera bywa widoczna w v4l2-ctl, a brakuje jej w przeglądarce

Jak przetrwać restart

modprobe działa tylko do ponownego uruchomienia. Trwałość zapewniają dwa pliki:

# /etc/modules-load.d/v4l2loopback.conf
v4l2loopback
# /etc/modprobe.d/v4l2loopback.conf
options v4l2loopback devices=1 video_nr=10 card_label="Virtual Camera" exclusive_caps=1

Pierwszy ładuje moduł przy starcie systemu, drugi przekazuje mu opcje. Często pisze się tylko ten pierwszy, a potem zastanawia, gdzie podziały się ustawienia.

Test bez żadnej aplikacji

Wypchnij zapętlony film do urządzenia za pomocą ffmpeg:

ffmpeg -stream_loop -1 -re -i video.mp4 \
  -f v4l2 -pix_fmt yuv420p /dev/video10

-re nadaje strumieniowi tempo czasu rzeczywistego (bez tego ffmpeg zapisuje tak szybko, jak potrafi, a wynik nie nadaje się do użytku), -stream_loop -1 powtarza w nieskończoność, a yuv420p to format pikseli, którego oczekują odbiorcy obrazu z kamery. Otwórz w przeglądarce stronę testu kamery — powinieneś zobaczyć film.

Typowe błędy

modprobe: ERROR: could not insert 'v4l2loopback': Required key not available

Secure Boot odrzuca niepodpisany moduł. Albo zarejestruj klucz Machine Owner Key i podpisz moduł, albo wyłącz Secure Boot w firmware. Dystrybucje dostarczające podpisaną wersję modułu unikają tego problemu całkowicie.

Moduł się kompiluje, ale nie pojawia się żadne urządzenie /dev/video

Sprawdź dmesg | tail zaraz po modprobe. Niezgodność wersji między modułem a działającym jądrem widać właśnie tam i jest to typowy sygnał, że DKMS nie przebudował modułu po aktualizacji.

Kamera istnieje, ale przeglądarki jej nie widzą

Załaduj moduł z exclusive_caps=1. To zdecydowanie najczęstsza przyczyna.

Aplikacje Flatpak nie widzą kamery

Piaskownica blokuje dostęp do urządzeń, dopóki go nie przyznasz:

flatpak override --user --device=all com.obsproject.Studio

Jak pominąć to wszystko

Wszystko powyżej to konfiguracja jednorazowa, ale wciąż oznacza sesję w terminalu i restart, zanim będziesz mógł odtworzyć film jako kamerę — i właśnie dlatego rada „po prostu użyj OBS” jest w Linuksie trudniejsza niż w Windows.

Pakiety .deb i .rpm CamLoopera robią to za ciebie. Deklarują v4l2loopback-dkms jako zależność, instalują pokazane wyżej pliki modules-load.d i modprobe.d oraz ładują moduł podczas instalacji, więc kamera jest gotowa, gdy instalator zakończy pracę, i ponownie po każdym restarcie. Bez terminala, bez restartu, a DKMS utrzymuje ją w działaniu mimo aktualizacji jądra.

Wypróbuj CamLooper

Za darmo, wyłącznie lokalnie, gotowe w mniej niż minutę.

Pobierz CamLooper