2 usb kamera egyszerre

Fórumok

3D-s játszadozáshoz kiinduásaként 2 db usb kamerát szeretnék egyszerre kezelni és scriptből egy-egy képet lőni felváltva (többször is). Az fswebcam-nak előírható ugyan, melyik video device-ról dolgozzon, de nálam csak egyetlen device, a /dev/video0 van, még akkor is, ha már bootoláskor rajta a két kamera.
1. Hogyan lehet /dev/video1 device-t is varázsolni a rendszerbe?
2. Az fswebcam piszok lassú, több, mint 1 sec alatt csinál egy 640x480-as képet. Tudtok gyorsabb kamera kezelőt, ami command line és kiválaszthatom, melyik device-t használja? Még jobb lenne valami scriptből kezelhető video recorder, de itt is kellene, hogy más-más video device-ról dolgozzon.

Hozzászólások

Alternativa: xawtv. nem epp' a legjobb de megteszi.
A /dev/video1 hianya: `dmesg`, ilyesmi mit mond?

Lépésről lépésre ezt tapasztalom:
Bootolás 2 db csatlakoztaott kamerával: 1 device van
steve@steve-desktop:~$ ls /dev/video*
/dev/video0

Kihúzom mindkettőt, majd újra csatlakoztatom: 2 device van (vagy legalábbis ez a látszat)
steve@steve-desktop:~$ ls /dev/video*
/dev/video0 /dev/video1

Gondolom, az okozza a bajt, hogy a két kamera ugyanazt a drivert rántaná be. Az első csatlakoztatásakor be is töltődik, a második estében meg ott a gubanc, hogy már van driver, de más device-hoz rendelve. A dmesg ezt mondja:
steve@steve-desktop:~$ dmesg | grep usb
[ 0.071986] usbcore: registered new interface driver usbfs
[ 0.072012] usbcore: registered new interface driver hub
[ 0.072053] usbcore: registered new device driver usb
[ 1.275985] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 1.275988] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.275992] usb usb1: Product: EHCI Host Controller
[ 1.275994] usb usb1: Manufacturer: Linux 3.13.0-24-generic ehci_hcd
[ 1.276011] usb usb1: SerialNumber: 0000:00:02.2
[ 1.365834] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[ 1.365838] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.365841] usb usb2: Product: OHCI PCI host controller
[ 1.365843] usb usb2: Manufacturer: Linux 3.13.0-24-generic ohci_hcd
[ 1.365846] usb usb2: SerialNumber: 0000:00:02.0
[ 1.422053] usb usb3: New USB device found, idVendor=1d6b, idProduct=0001
[ 1.422057] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.422059] usb usb3: Product: OHCI PCI host controller
[ 1.422062] usb usb3: Manufacturer: Linux 3.13.0-24-generic ohci_hcd
[ 1.422065] usb usb3: SerialNumber: 0000:00:02.1
[ 1.848032] usb 1-2: new high-speed USB device number 3 using ehci-pci
[ 1.981024] usb 1-2: New USB device found, idVendor=13fd, idProduct=1840
[ 1.981028] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1.981031] usb 1-2: Product: External
[ 1.981033] usb 1-2: Manufacturer: Generic
[ 1.981036] usb 1-2: SerialNumber: 355944375832544B20202020
[ 2.092027] usb 1-4: new high-speed USB device number 4 using ehci-pci
[ 2.235553] usb 1-4: New USB device found, idVendor=05e3, idProduct=0512
[ 2.235557] usb 1-4: New USB device strings: Mfr=2, Product=3, SerialNumber=0
[ 2.235560] usb 1-4: Product: U2 EE Cam
[ 2.235563] usb 1-4: Manufacturer: GenesysLogic Technology Co., Ltd.
[ 2.385157] usb-storage 1-2:1.0: USB Mass Storage device detected
[ 2.385281] scsi4 : usb-storage 1-2:1.0
[ 2.385675] usbcore: registered new interface driver usb-storage
[ 2.548057] usb 2-1: new full-speed USB device number 2 using ohci-pci
[ 2.757351] usb 2-1: New USB device found, idVendor=0d8c, idProduct=000e
[ 2.757359] usb 2-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[ 2.757362] usb 2-1: Product: Generic USB Audio Device
[ 2.783405] usbcore: registered new interface driver usbhid
[ 2.783411] usbhid: USB HID core driver
[ 12.840102] input: CM109 USB driver as /devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1:1.3/input/input4
[ 12.879143] usbcore: registered new interface driver cm109
[ 13.343732] input: U2 EE Cam as /devices/pci0000:00/0000:00:02.2/usb1/1-4/1-4:1.0/input/input6
[ 13.344094] usbcore: registered new interface driver uvcvideo
[ 15.041980] usbcore: registered new interface driver snd-usb-audio
[ 46.832091] usb 1-2: reset high-speed USB device number 3 using ehci-pci
[ 46.956117] usb 1-2: device descriptor read/64, error -71
[ 47.194891] usb 1-2: device descriptor read/64, error -71
[ 47.432100] usb 1-2: reset high-speed USB device number 3 using ehci-pci
[ 47.556100] usb 1-2: device descriptor read/64, error -71
[ 47.784087] usb 1-2: device descriptor read/64, error -71
[ 48.000069] usb 1-2: reset high-speed USB device number 3 using ehci-pci
[ 48.416057] usb 1-2: device not accepting address 3, error -71
[ 48.528063] usb 1-2: reset high-speed USB device number 3 using ehci-pci
[ 48.940027] usb 1-2: device not accepting address 3, error -71
[ 48.941029] usb 1-2: USB disconnect, device number 3
[ 49.060094] usb 1-2: new high-speed USB device number 5 using ehci-pci
[ 49.184182] usb 1-2: device descriptor read/64, error -71
[ 49.412035] usb 1-2: device descriptor read/64, error -71
[ 49.628098] usb 1-2: new high-speed USB device number 6 using ehci-pci
[ 49.752087] usb 1-2: device descriptor read/64, error -71
[ 49.980142] usb 1-2: device descriptor read/64, error -71
[ 50.196072] usb 1-2: new high-speed USB device number 7 using ehci-pci
[ 50.612059] usb 1-2: device not accepting address 7, error -71
[ 50.724085] usb 1-2: new high-speed USB device number 8 using ehci-pci
[ 51.140058] usb 1-2: device not accepting address 8, error -71
[ 51.596108] usb 2-2: new full-speed USB device number 3 using ohci-pci
[ 51.776088] usb 2-2: device descriptor read/64, error -62
[ 52.080300] usb 2-2: not running at top speed; connect to a high speed hub
[ 52.098337] usb 2-2: New USB device found, idVendor=13fd, idProduct=1840
[ 52.098347] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 52.098350] usb 2-2: Product: External
[ 52.098353] usb 2-2: Manufacturer: Generic
[ 52.098356] usb 2-2: SerialNumber: 355944375832544B20202020
[ 52.101445] usb-storage 2-2:1.0: USB Mass Storage device detected
[ 52.108104] scsi5 : usb-storage 2-2:1.0
[ 96.176068] usb 1-4: USB disconnect, device number 4
[ 98.464070] usb 1-3: new high-speed USB device number 9 using ehci-pci
[ 98.607629] usb 1-3: New USB device found, idVendor=05e3, idProduct=0512
[ 98.607637] usb 1-3: New USB device strings: Mfr=2, Product=3, SerialNumber=0
[ 98.607641] usb 1-3: Product: U2 EE Cam
[ 98.607644] usb 1-3: Manufacturer: GenesysLogic Technology Co., Ltd.
[ 98.668100] input: U2 EE Cam as /devices/pci0000:00/0000:00:02.2/usb1/1-3/1-3:1.0/input/input7
[ 98.908038] usb 1-4: new high-speed USB device number 10 using ehci-pci
[ 99.344043] usb 3-2: new full-speed USB device number 2 using ohci-pci
[ 99.548108] usb 3-2: not running at top speed; connect to a high speed hub
[ 99.569106] usb 3-2: New USB device found, idVendor=05e3, idProduct=0512
[ 99.569111] usb 3-2: New USB device strings: Mfr=2, Product=3, SerialNumber=0
[ 99.569115] usb 3-2: Product: U2 EE Cam
[ 99.569118] usb 3-2: Manufacturer: GenesysLogic Technology Co., Ltd.
[ 99.640311] input: U2 EE Cam as /devices/pci0000:00/0000:00:02.1/usb3/3-2/3-2:1.0/input/input8
[ 99.640638] usb 1-3: USB disconnect, device number 9
[ 99.880048] usb 1-3: new high-speed USB device number 11 using ehci-pci
[ 100.023537] usb 1-3: New USB device found, idVendor=05e3, idProduct=0512
[ 100.023546] usb 1-3: New USB device strings: Mfr=2, Product=3, SerialNumber=0
[ 100.023549] usb 1-3: Product: U2 EE Cam
[ 100.023552] usb 1-3: Manufacturer: GenesysLogic Technology Co., Ltd.
[ 100.036413] input: U2 EE Cam as /devices/pci0000:00/0000:00:02.2/usb1/1-3/1-3:1.0/input/input9
[ 110.796058] usb 3-2: USB disconnect, device number 2
[ 110.872078] usb 1-3: USB disconnect, device number 11
[ 113.752048] usb 1-3: new high-speed USB device number 12 using ehci-pci
[ 113.895565] usb 1-3: New USB device found, idVendor=05e3, idProduct=0512
[ 113.895573] usb 1-3: New USB device strings: Mfr=2, Product=3, SerialNumber=0
[ 113.895577] usb 1-3: Product: U2 EE Cam
[ 113.895580] usb 1-3: Manufacturer: GenesysLogic Technology Co., Ltd.
[ 113.956018] input: U2 EE Cam as /devices/pci0000:00/0000:00:02.2/usb1/1-3/1-3:1.0/input/input10
[ 114.196038] usb 1-4: new high-speed USB device number 13 using ehci-pci
[ 114.339616] usb 1-4: New USB device found, idVendor=05e3, idProduct=0512
[ 114.339624] usb 1-4: New USB device strings: Mfr=2, Product=3, SerialNumber=0
[ 114.339627] usb 1-4: Product: U2 EE Cam
[ 114.339630] usb 1-4: Manufacturer: GenesysLogic Technology Co., Ltd.
[ 114.400076] input: U2 EE Cam as /devices/pci0000:00/0000:00:02.2/usb1/1-4/1-4:1.0/input/input11

Ha azt hiszem, hogy van két device, akkor tévedek:
steve@steve-desktop:~$ fswebcam -d /dev/video0 -r 640x480 --png -1 shot0.png; fswebcam -d /dev/video1 -r 640x480 --png -1 shot1.png
--- Opening /dev/video0...
Trying source module v4l2...
Error opening device: /dev/video0
open: Device or resource busy
Trying source module v4l1...
Error opening device: /dev/video0
open: Device or resource busy
Unable to find a source module that can read /dev/video0.
--- Opening /dev/video1...
Trying source module v4l2...
/dev/video1 opened.
No input was specified, using the first.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Setting output format to PNG, quality -1
Writing PNG image to 'shot1.png'.

És megint:
steve@steve-desktop:~$ ls /dev/video*
/dev/video1

Számomra úgy tűnik, hogy mikor két device van, az csak látszólag van így, mert a második kamera csatlakoztatása elveszi a drivert a korábban csatlakoztatott device-tól. Persze, ilyen rendszerszintű kérdésben én csak totózok.

Csak tipp: a video eszközt kezelő modult kéne megfelelően paraméterezni, hogy ne egy, hanem két kamerával is hajlandó legyen dolgozni.

Csak tippelem, hogy mit és merre kéne keresgélni - mondjuk úgy, hogy régóta használok Linuxot :-P Javaslom, hogy kamera rádugása nélkül indítsd el a gépet, root-ként rakd el az lsmod kimenetét, majd dugd rá a gépre a kamerát (egy darabot), amikor működik, akkor csinálj egy másik lsmod kimenetet.
A kettő különbsége adja meg, hogy milyen modulok kellenek a kamerához. Ezekre célszerű szűkíteni a keresgélést, illetve érdemes megnézni modinfo parancs használatával, hogy ezeknek a moduloknak milyen paraméterei lehetnek, hátha kiderül abból is valami.

Tudod, én úgy a hetvenes években kezdtem Z80-nal, de 2004-ben 55 évesen álltam át Linuxra és világéletemben egychipes hw-sw világban dolgoztam. Valamikor triviális volt, hogy minden Linux-szal foglalkozó emberke rendszerszinten otthon van a témában, de (szerencsére???) már vannak felhasználók is, akiknek nem elég rámutatni egy driver részlet forrására, mert nem tudnak mit kezdeni vele. Szóval köszönöm, hogy lejjebb is adod ;)

Küldöm a két lsmod kimenetet is, de először is itt a különbsége:
steve@steve-desktop:~$ diff nocamera muxik
1a2,6
> uvcvideo 71309 1
> videobuf2_vmalloc 13048 1 uvcvideo
> videobuf2_memops 13170 1 videobuf2_vmalloc
> videobuf2_core 39258 1 uvcvideo
> videodev 108503 3 uvcvideo,videobuf2_core

A bootolás utáni lmod:
Module Size Used by
rfcomm 53664 0
bnep 18895 2
bluetooth 342263 10 bnep,rfcomm
snd_usb_audio 127548 2
snd_intel8x0 33110 2
snd_ac97_codec 105709 1 snd_intel8x0
snd_usbmidi_lib 24367 1 snd_usb_audio
ac97_bus 12642 1 snd_ac97_codec
snd_hwdep 13272 1 snd_usb_audio
snd_pcm 85501 3 snd_usb_audio,snd_ac97_codec,snd_intel8x0
snd_page_alloc 14230 2 snd_intel8x0,snd_pcm
snd_seq_midi 13132 0
snd_seq_midi_event 14475 1 snd_seq_midi
snd_rawmidi 25135 2 snd_usbmidi_lib,snd_seq_midi
radeon 1416373 3
snd_seq 55383 2 snd_seq_midi_event,snd_seq_midi
ttm 72698 1 radeon
snd_seq_device 14137 3 snd_seq,snd_rawmidi,snd_seq_midi
drm_kms_helper 46907 1 radeon
snd_timer 28584 2 snd_pcm,snd_seq
psmouse 91033 0
drm 243792 5 ttm,drm_kms_helper,radeon
serio_raw 13230 0
snd 60871 19 snd_usb_audio,snd_ac97_codec,snd_intel8x0,snd_hwdep,snd_timer,snd_pcm,snd_seq,snd_rawmidi,snd_usbmidi_lib,snd_seq_device,snd_seq_midi
i2c_algo_bit 13197 1 radeon
cm109 17781 0
soundcore 12600 1 snd
shpchp 32128 0
i2c_nforce2 13037 0
mac_hid 13037 0
parport_pc 31981 1
ppdev 17391 0
lp 13299 0
parport 40836 3 lp,ppdev,parport_pc
usbhid 47035 0
hid 87604 1 usbhid
pata_acpi 12886 0
usb_storage 48417 1
firewire_ohci 35529 0
firewire_core 61867 1 firewire_ohci
pata_amd 13761 0
forcedeth 62140 0
crc_itu_t 12627 1 firewire_core
sata_sil 13256 3
floppy 55378 0

Utána rádugva egyik kamerát:
Module Size Used by
uvcvideo 71309 1
videobuf2_vmalloc 13048 1 uvcvideo
videobuf2_memops 13170 1 videobuf2_vmalloc
videobuf2_core 39258 1 uvcvideo
videodev 108503 3 uvcvideo,videobuf2_core
rfcomm 53664 0
bnep 18895 2
bluetooth 342263 10 bnep,rfcomm
snd_usb_audio 127548 2
snd_intel8x0 33110 2
snd_ac97_codec 105709 1 snd_intel8x0
snd_usbmidi_lib 24367 1 snd_usb_audio
ac97_bus 12642 1 snd_ac97_codec
snd_hwdep 13272 1 snd_usb_audio
snd_pcm 85501 3 snd_usb_audio,snd_ac97_codec,snd_intel8x0
snd_page_alloc 14230 2 snd_intel8x0,snd_pcm
snd_seq_midi 13132 0
snd_seq_midi_event 14475 1 snd_seq_midi
snd_rawmidi 25135 2 snd_usbmidi_lib,snd_seq_midi
radeon 1416373 3
snd_seq 55383 2 snd_seq_midi_event,snd_seq_midi
ttm 72698 1 radeon
snd_seq_device 14137 3 snd_seq,snd_rawmidi,snd_seq_midi
drm_kms_helper 46907 1 radeon
snd_timer 28584 2 snd_pcm,snd_seq
psmouse 91033 0
drm 243792 5 ttm,drm_kms_helper,radeon
serio_raw 13230 0
snd 60871 19 snd_usb_audio,snd_ac97_codec,snd_intel8x0,snd_hwdep,snd_timer,snd_pcm,snd_seq,snd_rawmidi,snd_usbmidi_lib,snd_seq_device,snd_seq_midi
i2c_algo_bit 13197 1 radeon
cm109 17781 0
soundcore 12600 1 snd
shpchp 32128 0
i2c_nforce2 13037 0
mac_hid 13037 0
parport_pc 31981 1
ppdev 17391 0
lp 13299 0
parport 40836 3 lp,ppdev,parport_pc
usbhid 47035 0
hid 87604 1 usbhid
pata_acpi 12886 0
usb_storage 48417 1
firewire_ohci 35529 0
firewire_core 61867 1 firewire_ohci
pata_amd 13761 0
forcedeth 62140 0
crc_itu_t 12627 1 firewire_core
sata_sil 13256 3
floppy 55378 0

A fincsi Z80... Anno a HT1080Z volt az első számítógép, amit az "utolsó bitig" megismertem a '80-as évek második felében, igaz, középiskolában, úgyhogy jóval fiatalabb vagyok, ez igaz - viszont 1993-94 óta szinte folyamatosan Linux és környéke van nálam műsoron, igaz, multimédiás dolgokat csak érintőlegesen, úgyhogy én is csak tippelek, mi lehet a gond.
Az uvcvideo "tipp" bejött (annak első blikkre nincs releváns paramétere), a videodev ls a többi használatos modult kéne körbejárni (modinfo parancs), de szerintem van itt ebben járatosabb kolléga is.

A HT gép alapja a VideoGenie volt, ami maga is egy TRS-80 klón. Nekem a HT1080Z megjelenése előtt úgy 1,5-2 évvel már működött a saját magam által összeforrasztott TRS-80 klón, amit hw-esen át kellett tervezzek a beszerezhető alkatrészekhez. De rég volt...
-----
A kamerákat ki-be húzgálva a v4l2 időnkét egyszerre látta mindkettőt. Akkor az

fswebcam -d /dev/video0 -r 640x480 --png -1 shot0.png; fswebcam -d /dev/video1 -r 640x480 --png -1 shot1.png

paraméterekkel rálőve mindkettő készített képet, de a másodiknak indított kamera visszaredukálta a méretet 240x160-ra. Talán kicsinek látta a sávszélességet(?).
Azt hittem, ez pár soros scripttel elintézhető probléma, de látom, ez hosszú menet lesz.
Köszi a tippeket.