Se avete una webcam che restituisce in output uno stream mjpeg e avete la necessità di estrarre un solo frame e convertirlo in jpeg questo post vi può essere d’aiuto.
La sola cosa che dovete fare è lanciare questo comando che usa curl e mplayer.
curl -s <stream url> | mplayer -demuxer +rawvideo -vc +ffmjpeg -fps 2 -rawvideo fps=2:w=640:h=480 -noextbased -vo jpeg -frames 1 -
Verrà creato nella directory corrente un file, “00000001.jpg”, con il frame catturato dalla streaming camera.
Praticamente dico a mplayer di fare il play di stdin (il nome del file è “-”), che viene fornito da curl tramite la pipe “|”, forzandogli la tipologia di codec e demuxer, altrimenti per default lui tenta di capirla dal file di ingresso facendo delle seek.
Gli dico inoltre di produrre file jpeg piuttosto che fare play su video ( -vo jpeg ) e di prendere un solo frame (-frames 1)
Dato che stdin non prevede seek, se non specificassi i parametri con cui è codificato lo stream otterrei questo errore:
Cannot seek backward in linear streams!
Seek failed
Prerequisiti sono curl e mplayer
sudo apt-get install mplayer curl
Stai leggendo “ estrarre un singolo frame da uno stream mjpeg ”, un post di Fabrizio Zellini
XHTML: Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Nessun commento
commenta | feed commenti [?] | trackback uri [?]