Krkolomný název, což? Ale vyjadřuje přesně to, co chceme udělat tj. z webkamery, která nám kdesi třeba nad staveništěm spokojeně bzučí, dostaneme například co 5 minut jeden snímek ve formátu JPEG.
Kamera má navíc HTTP Basic Auth, takže se nám to ještě komplikuje i o toto. Nejjednodušší, jak jsem objevil je přes curl stáhnout kousek streamu:
curl -m 2 --user uzivatel:heslo "http://co.kde.cz/video.cgi?videp.mjpg" >output/out.mjpg
Kde parametr „m“ vyjadřuje dobu po kterou se bude stream stahovat – teoreticky stačí i jedna vteřina, ale měl jsem občas problém s kolísavostí kvality internetu na straně stavby, tedy raději 2s. Parametr „user“ nám zabezpečí autentizaci.
Následně pak pomocí ffmpeg vyexportovat z videa snímky:
ffmpeg -i out.mjpg -vcodec copy output/frame%d.jpg
Nakonec vybrat nějaký snímek (uprostřed, chce to vyzkoušet, kolikátý v řadě bude vzhledem k délce streamu) a ten si vytáhnout někam bokem.
Celý script, který následně plácneme do crona, aby se spouštěl například co 5 minut by tedy mohl vypadat nějak takto:
#!/bin/bash curl -m 2 --user uzivatel:heslo "http://co.kde.cz/video.cgi?videp.mjpg" >output/out.mjpg ffmpeg -i out.mjpg -vcodec copy output/frame%d.jpg mv output/frame3.jpg final/`date +"%d%m%y%H%M"`.jpg rm output/*
Ošetření chyb a výstupů nechám plně ve vaší kompetenci.
Pingback: Jednoduché časosběrné video - Lomítkáři