Portál AbcLinuxu, 12. května 2025 11:33
Řešení dotazu:
tak postupuju podle tvého návodu a u zavádění modulu (nainstalovaný je) dostanu chybu:
modprobe v4l2loopback
modprobe: FATAL: Module v4l2loopback not found in directory /lib/modules/4.4.0-93-generi
gphoto2 --capture-movie --stdout | gst-launch-0.10 videotestsrc ! v4l2sink device=/dev/video1
Nastavuje se rouru na POZASTAVENA…
CHYBA: Roura se nechce pozastavit.
CHYBA: od prvku /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: Nelze rozpoznat zařízení "/dev/video1".
Dodatečné ladicí informace:
v4l2_calls.c(483): gst_v4l2_open (): /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0:
system error: Adresář nebo soubor neexistuje
Nastavuje se roura na PRÁZDNÁ…
Uvolňuje se roura…
Capturing preview frames as movie to 'stdout'. Press Ctrl-C to abort.
modprobe v4l2loopback devices=2
ale presto tam nemam video1
lsmod | grep v4l2loopback
v4l2loopback 40960 0
videodev 176128 1 v4l2loopback
ale když se snažím o přesměrování pomocí:
gphoto2 --capture-movie --stdout | gst-launch-0.10 videotestsrc ! v4l2sink device=/dev/video1
tak mi to hodí tu chybu. A nevím proč.
dmesg | grep /dev/video*mi nenajde nic. S kečupem ?
dmesg | grep /dev/video ls -l /dev/video*
#: gphoto2/actions.c:1004 #, fuzzy, c-format msgid "Capturing preview frames as movie to '%s'. Press Ctrl-C to abort.\n" msgstr "Čekám na události od fotoaparátu. Přerušte stisknutím Ctrl-C.\n"
v4l2loopback-dkms
.
Modul se mi zavedl:
lsmod | grep v4l2loopback v4l2loopback 40960 0 videodev 176128 1 v4l2loopbackAle při spuštění gphoto2 je vidět, že to má problém s device=/dev/video1. (pokud se snazim najit video1 v dmesg, nevidim ho)
/GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: Nelze rozpoznat zařízení "/dev/video1" /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: system error: Adresář nebo soubor neexistujea já bych teď uvítal radu jak dál.
modprobe v4l2loopback ls -1 /dev/video*Více zařízení lze vytvořit pomocí parametru "devices" modulu "v4l2loopback", to se hodí pokud byste chtěl přípojit více zrcadlovek současně:
modprobe v4l2loopback devices=10Vytvoření video zařízení by nemělo selhat, je to virtuální zařízení emulující webkameru a nepracuje vůbec s hardwarem. Bude sloužit jako výstup. Pokud máte nyní video0 zařízení, zkuste detekovat fotoaparát v gphoto2 a číst z něj:
gphoto2 --abilities gphoto2 --stdout --capture-movieDruhý z uvedených příkazů bude na konzoli vypisovat "smetí". Přerušíte jej pomocí CTRL+C. Pokud nyní umíte číst z reálného harwaru - fotoaparátu, můžete poslat proud videa z fotoaparátu na emulovanou webkameru. K tomu slouží ten přikaz:
gphoto2 --capture-movie --stdout | gst-launch-0.10 videotestsrc ! v4l2sink device=/dev/video0Ten proud videa posílá gphoto2 do gstreameru, který s ním něco provádí (dekóduje?) a teprve pak pošle do emulované webkamery. Gstreameru lze zadat i další parametry, čímz lze upravit finální výstup, která bude emulované webkamera poskytovat, třeba zde https://superuser.com/a/961970 používají toto:
gphoto2 --stdout --capture-movie | gst-launch-0.10 fdsrc ! decodebin2 name=dec ! queue ! ffmpegcolorspace ! v4l2sink device=/dev/video0To asi celé. Pokud jsem se dopustil nějaké nepřesnosti, ostatní mě jistě opraví.
ls -1 /dev/video*
vypíše , že existuje virt. /dev/video0
.
Dále, oba tyto příkazy také fungují:
gphoto2 --abilities gphoto2 --stdout --capture-movieProblém nastává s tím třetím příkazem, kdy chci poslat proud videa z fotoaparátu na emulovanou webkameru. Tuší někdo co by mohlo být ioctl?
gphoto2 --capture-movie --stdout | gst-launch-0.10 videotestsrc ! v4l2sink device=/dev/video0 Capturing preview frames as movie to 'stdout'. Press Ctrl-C to abort. Nastavuje se rouru na POZASTAVENA… CHYBA: Roura se nechce pozastavit. CHYBA: od prvku /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: Nezdařilo se dotázání na vlastnosti vstupu 0 na zařízení /dev/video0 Dodatečné ladicí informace: v4l2_calls.c(134): gst_v4l2_fill_lists (): /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: Failed to get 0 in input enumeration for /dev/video0. (25 - Pro toto zařízení nevhodné ioctl) Nastavuje se roura na PRÁZDNÁ… Uvolňuje se roura…děkuji.
rmmod v4l2loopback modprobe v4l2loopback exclusive_caps=0
gphoto2 --stdout --capture-movie | gst-launch-0.10 fdsrc ! decodebin2 name=dec ! queue ! ffmpegcolorspace ! v4l2sink device=/dev/video0 Capturing preview frames as movie to 'stdout'. Press Ctrl-C to abort. Nastavuje se rouru na POZASTAVENA… Roura se PŘEDVINUJE… CHYBA: od prvku /GstPipeline:pipeline0/GstFdSrc:fdsrc0: Interní chyba toku dat. Dodatečné ladicí informace: gstbasesrc.c(2625): gst_base_src_loop (): /GstPipeline:pipeline0/GstFdSrc:fdsrc0: streaming task paused, reason not-negotiated (-4) CHYBA: roura se nechce předvinout. Nastavuje se roura na PRÁZDNÁ… Uvolňuje se roura…Je v tom ještě nějaký další fígl ? :D
pres sve ukajeni delani z lidi blbce, si prehledl, ze ma Tomas OS v cestine, ale neni (a ne jeho chybou) kompletne vse v gphoto2 lokalizovane...Najmä tu (13)
modprobe: FATAL: Module v4l2loopback not found in directory /lib/modules/4.4.0-93-generi
gphoto2 --capture-movie --stdout
padá MJPEG. Co si s ním dál uděláš je na tobě.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.