estrarre un singolo frame da uno stream mjpeg
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
Riferimenti
Stai leggendo “ estrarre un singolo frame da uno stream mjpeg ”, un post di Fabrizio Zellini
- Pubblicato il
- 6 Febbraio 2009 //php the_time('G:i') ?>
- Categorie:
- video
Nessun commento
commenta | feed commenti [?] | trackback uri [?]