[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux_var] De mplayeribus smadonnibus [WAS: (Software per) webcam decente?]



Il giorno 16/apr/09, alle ore 16:44, Luca Lesinigo ha scritto:
Registro il video senza problemi con mplayer (tv:// -tv driver=v4l2) ma non sono ancora riuscito a far registrare contemporanemente anche l'audio (il driver v4l2 di mplayer dovrebbe, teoricamente, poter prendere l'audio da un dispositivo ALSA) nonostante una robusta dose di RTFM ed una ancor più robusta dose di smadonnamenti. Qualcuno ha mai registrato audio e video insieme con mplayer/mencoder ed il driver v4l2?
Nevermind, oggi ci sono riuscito.
Dopo aver lasciato da parte manuali, ragionamenti, indagini varie, ho praticamente cominciato a scrivere commandline a casaccio e alla fine ho azzeccato la registrazione anche dell'audio :D
La faccenda si sta contorcendo un po' su sé stessa, per questo ho pensato di sottoporvela più in dettaglio, magari qualcuno ha un'idea brillante o magari sarà semplicemente un'interessante lettura :D

Background: tutte le prime prove sono state fatte con Easy Peasy 1.0 (in pratica Ubuntu 8.10, kernel 2.6.27-8-eeepc, mplayer-1.0- rc2-0ubuntu17+medibuntu1), in seguito sono passato ad usare il sistema che mi sono preparato io (basato su Gentoo Linux, kernel 2.6.29-gentoo- r1, mplayer-1.0_rc2 snapshot del 22/3/2009, tutto compilato con flag ottimizzati). Non che questo sembri cambiare gran che visto che quanto segue accade con entrambi i sistemi.

La webcam onboard dell'EEE701 è una USB Video Class e quindi utilizza il driver uvcvideo, interfaccia V4L2. Sembra che il driver riesca ad uscirsene nei formati UYVY ed YUYV (il secondo è chiaramente un semplice byte shift). La webcam di test che uso è una Logitech E1000, driver gspca_zc3xx, interfaccia V4L2, output in formato 422P (yuv422p)

Per vedere/registrare uso mplayer/mencoder col driver v4l2 (tv:// -tv driver=v4l2:opzioni...) - il suddetto driver prevede la possibilità di prendere l'audio da una fonte ALSA, e sfrutto questa cosa per registrare l'audio dal microfono del pc (la webcam non ha microfono). Infine, da test vari fatti l'unico codec praticabile per registrare in tempo reale è MJPEG - per l'audio uso MP2 che va benone (e non mi serve chissà quale qualità). La command line è una roba del genere:

$ mencoder tv:// -o file.avi -tv driver=v4l2:forceaudio:alsa:audiorate=48000 [.....]

Ho stabilito di quale framerate dovrebbero essere capaci le webcam (sia quella dell'asus, per le prove, sia la E1000 che sto testando sulla moto) provando vari setting di bitrate (:fps=XX nel driver v4l2) fino a che nelle statistiche finali non tornavano i conti (fps * tempo = numero_frames_totale). Salta fuori che per la E1000 abbiamo due scelte: 320x240 con un massimo effettivo di 11.5fps, oppure 640x480 a 6.3fps.

Passato tutto il malloppone di info, veniamo ai miei due problemi:
1) con la webcam dell'EEE tutto ok come sopra, ma quando uso la E1000 mplayer/mencoder crashano (Floating Point Exception) a meno che non disattivo la registrazione dell'audio! Mi tocca registrare l'audio a parte (uso arecord | twolame). Ricordo che capita sia con ubuntu che con gentoo, ho provato anche a compilare mplayer senza ottimizzazioni, etc etc. 2) il video prodotto con la E1000 settata a fps=11.5 non è a velocità costante, il framerate reale varia durante la ripresa in particolare quando c'è movimento nella scena

Sviluppi futuri:
- credo e spero di risolvere entrambe le cose in un colpo solo quando arriva la S7500 (che produce nativamente MJPEG) - vorrei comunque far andare la E1000 (è anche una questione di principio! non può averla vinta!) e qui ho due ipotesi: -- una è che se riuscissi a registrare insieme audio e video avrei il "tempo" giusto quando riproduco (anche se il framerate variasse chissene, ma almeno un minuto di file corrisponderebbe ad un minuto di wall clock :D) a causa dell'interleaving e/o sync tra i flussi audio e video -- l'altra, fin che non risolvo la parte audio, è provare ad usarla ad un framerate più basso di quello che riesce a produrre (d'altra parte i miei test sono stati fatti su scene quasi statiche) e vedere se così "ci sta dietro"

Domande:
- ma non esiste nessun altro canchero di software per registrare video da V4L2 (con formati vari da riconvertire in MJPEG) ed audio da ALSA? chiaramente da console.
- idee per il problema audio+video in mplayer/mencoder ?

Ciao a tutti ;)
--
Luca Lesinigo
--
Per cancellare l'iscrizione: <talking-unsubscribe at ml.linuxvar.it>
Archivi web e configurazione: http://ml.linuxvar.it/ml/