Linux'ta v4l2loopback: kurulum, kalıcılık ve sık görülen hatalar
Linux'ta yerleşik bir sanal kamera yoktur. Uygulamalar /dev/video0 gibi bir aygıtı açıp ondan kare okur ve çekirdek bunun arkasında gerçek bir donanım olmasını bekler. v4l2loopback, kamera gibi davranan ama içeriği yazılımdan beslenen bir aygıt oluşturan çekirdek modülüdür.
Linux'taki her sanal kamera akışının temeli budur: OBS de, ffmpeg boru hatları da, CamLooper da bir geri döngü aygıtına yazar. Doğru kurulum şöyle yapılır.
Kurulum
Çekirdek her güncellendiğinde modülün otomatik olarak yeniden derlenmesi için DKMS paketini kurun:
# Debian / Ubuntu
sudo apt install v4l2loopback-dkms
# Fedora / RHEL
sudo dnf install v4l2loopback
# Arch
sudo pacman -S v4l2loopback-dkms
Burada DKMS önemlidir. Onsuz modül, kurulum anındaki çekirdeğe göre derlenir ve bir sonraki çekirdek güncellemesinden sonra sanal kameranız sessizce çalışmayı bırakır.
Modülü yükleme
sudo modprobe v4l2loopback
Aygıtın oluştuğunu doğrulayın:
lsmod | grep v4l2loopback
ls -l /dev/video*
Yüklerken işe yarayan seçenekler:
sudo modprobe v4l2loopback \
devices=1 \
video_nr=10 \
card_label="Virtual Camera" \
exclusive_caps=1
video_nr=10aygıtı/dev/video10'a sabitler, böylece gerçek bir web kamerasıyla çakışmazcard_labeluygulamaların kamera listesinde gösterdiği adı belirlerexclusive_caps=1belirleyici seçenektir — aygıtın yakalama yeteneğini yalnızca ona bir şey yazarken duyurmasını sağlar. Chrome, Firefox ve bazı Electron uygulamaları bu seçenek olmayan geri döngü aygıtlarını yok sayar; bir kameranınv4l2-ctl'de görünüp tarayıcıda kaybolmasının nedeni budur
Yeniden başlatmada kalıcı kılma
modprobe yalnızca yeniden başlatmaya kadar geçerlidir. İki dosya bunu kalıcı hale getirir:
# /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
İlki modülü açılışta yükler, ikincisi seçeneklerini iletir. Sık sık yalnızca ilki yazılır ve sonra seçeneklerin nereye kaybolduğu merak edilir.
Hiçbir uygulama olmadan test etme
ffmpeg ile aygıta döngüsel bir video gönderin:
ffmpeg -stream_loop -1 -re -i video.mp4 \
-f v4l2 -pix_fmt yuv420p /dev/video10
-re akışı gerçek zamana göre hızlandırır (onsuz ffmpeg olabildiğince hızlı yazar ve sonuç kullanılamaz), -stream_loop -1 sonsuz tekrarlar, yuv420p ise kamera kullanan tarafın beklediği piksel biçimidir. Tarayıcıda bir web kamerası test sayfası açın; videoyu görüyor olmalısınız.
Sık görülen hatalar
modprobe: ERROR: could not insert 'v4l2loopback': Required key not available
Güvenli Önyükleme, imzasız modülü reddediyor. Ya bir Machine Owner Key kaydedip modülü imzalayın ya da ürün yazılımından Güvenli Önyüklemeyi kapatın. Modülün imzalı bir sürümünü sunan dağıtımlar bu sorunu tamamen aşar.
Modül derleniyor ama /dev/video aygıtı görünmüyor
modprobe'dan hemen sonra dmesg | tail çıktısına bakın. Modül ile çalışan çekirdek arasındaki sürüm uyuşmazlığı burada görünür; bu da genelde DKMS'nin güncellemeden sonra yeniden derlemediğinin işaretidir.
Kamera var ama tarayıcılar göremiyor
Modülü exclusive_caps=1 ile yükleyin. Açık ara en sık görülen neden budur.
Flatpak uygulamaları kamerayı görmüyor
Korumalı alan, siz izin verene kadar aygıt erişimini engeller:
flatpak override --user --device=all com.obsproject.Studio
Tüm bunları atlamak
Yukarıdakilerin tamamı bir kez yapılan bir kurulumdur, ama bir videoyu kamera olarak oynatabilmeniz için yine de bir terminal oturumu ve bir yeniden başlatma gerekir — "OBS kullan gitsin" tavsiyesinin Linux'ta Windows'a göre neden daha zor olduğunun sebebi de budur.
CamLooper'ın .deb ve .rpm paketleri bunu sizin yerinize yapar. v4l2loopback-dkms'yi bağımlılık olarak bildirir, yukarıda gösterilen modules-load.d ve modprobe.d dosyalarını kurar ve modülü kurulum sırasında yükler; böylece kamera, kurulum programı biter bitmez ve her yeniden başlatmadan sonra hazır olur. Terminal yok, yeniden başlatma yok; DKMS de çekirdek güncellemeleri boyunca çalışmayı sürdürmesini sağlar.