webカメラとraspberrypiでgifアニメ


以前、室内からでもこっそり空模様をのぞけないかなぁと思い、raspberrypiにwebカメラをつなげスマホから空を見られるようにしました。
が、結局仕事中に見る暇もなく、15分おきに一枚撮影するという簡素な状態になっておりました。
そのおかげで謎の現象を撮影することができたのですが、
ずっとなんか物足りないなーと思ってました。
撮った画像を全部見るのもなかなか大変でしたし。

そこで、1分おきに撮影して、1日の最後にgifアニメにするのはどうかと思い至りました。

撮影に使用したのは『MJPG-streamer』
インストールは大変だったような気がしますが、ずいぶん前なので忘れてしまいました。
撮影はMJPG-streamerのスナップショット機能を用い、
wgetコマンドで画像を取得します。

その前にMJPG-streamerの起動。
毎回面倒なのでmjpg_streamer_start.shファイルを作りました。

#!/bin/sh
PORT="8080"
ID="user"
PW="password"
SIZE="640x480"
FRAMERATE="20"
export LD_LIBRARY_PATH=/usr/local/lib
~/mjpg-streamer/mjpg_streamer -b -i "input_uvc.so -f $FRAMERATE -r $SIZE -d /dev/video0 -y -n" -o "output_http.so -w /usr/local/www -p $PORT -c $ID:$PW"

画像ダウンロードするときはこんな感じ

wget -O ~/img/img.jpg --http-user=user --http-passwd=password http://localhost:8080?action=snapshot

まず、毎朝その日の撮影用フォルダを作成する用
gif1.sh

#!/bin/sh
DIR=`date +%Y%m%d`
mkdir ~/gif/$DIR

次に一分おきにファイルをダウンロードする用
gif2.sh

#!/bin/sh
PHOTO=`date +%H%M`.jpg
DIR=`date +%Y%m%d`
wget -O ~/gif/$DIR/$PHOTO --http-user=user --http-passwd=password http://localhost:8080?action=snapshot

そして最後にgifアニメにする用
gif3.sh

#!/bin/sh
DIR=`date +%Y%m%d`
convert -layers Optimize -loop 1 -delay 15 -scale 50% +map ~/gif/$DIR/* ~/gif/$DIR.gif

これらをクーロンで管理
cron.conf

0 3 * * * ~/gif1.sh
*/1 4-20 * * * ~/gif2.sh
3 21 * * * ~/gif3.sh

朝の3時にフォルダ作成→4時から8時59分まで1分おきに撮影→21時3分にgifアニメ生成。
なんだか冗長になってしまったけど、今はこれが精一杯。
これでうまくいくかは今日の21時にならないとわからない・・・

crontabの設定はこちらのサイト
gifアニメの作成はこちらのサイト
こちらのサイト
こちらのサイト
を参考にさせて頂きました。