Tag: embedded
Webcam + linux / software – timestamps = ???
di luca, mag.29, 2009, cat. IT, video
Per un progettino più o meno stupido sto cercando di registrare audio e video da un sistema linux con una o più webcam usb. Parliamo di netbooks o piattaforme embedded quindi non ci sono montagne di risorse a disposizione, niente encoding H.264 in realtime o cose del genere
Al momento l’audio non è un problema, ma giusto per dovere di cronaca segnalo che viene registrato dal microfono onboard dell’host linux o dal microfono integrato nella webcam, in entrambi i casi si tratta di fonti ALSA e viene poi codificato in realtime in MP2.
Per quanto riguarda il video, al momento utilizzo mencoder ed il relativo supporto v4l2 per registrare dalle webcam. Il codec scelto è MJPEG: nel caso delle webcam economiche è praticamente l’unico codec abbastanza leggero da girare in realtime sui processori in uso, e nel caso delle webcam un po’ più serie è il formato nativo fornito dalla webcam in hardware (a parte altri formati meno compressi), ed è quindi l’unica scelta per occupare poche risorse e registrare da più fonti contemporaneamente a risoluzioni e framerate alti.
Il problema è che la velocità del video non è costante! Il framerate varia (sia in più che in meno) durante la registrazione, anche registrando insieme audio e video (speravo aiutasse a fare una qualche opera di sync…), ed il tutto avviene sia registrando da webcam economiche e convertendo in MJPEG sia registrando direttamente in MJPEG dalle cam che ne sono capaci (prove fatte con una Logitech S7500). Uno sguardo al sito dei driver USB Video Class per linux scoraggia ancor di più: MJPEG payload – Partially – Timestamps support is not implemented. Non sono un esperto di MJPEG, ma temo che i timestamps (o meglio, la loro assenza) abbiano a che fare col mio problema…
Proverò ad iscrivermi alla mailing list dei driver UVC e cercare aiuto lì, nel frattempo se chiunque avesse suggerimenti su software da provare sono ben accetti… chiaramente parliamo di software che non richiedano una GUI o X11… devono poter essere avviati e killati da script.