ラズパイで、タイムラプス撮影および動画作成をおこなったみました。
タイムラプラス撮影とは?
一定時間毎に撮影した写真をつなぎ合わせてパラパラ漫画のような動画にしたものです。そのようなことができる動画を「タイムラプス動画」、またそのような動画を撮影することを「タイムラプス撮影」といい、微速度撮影、インターバル動画撮影などと呼ばれいるそうです。
では、実際にラズパイでやってみましょう!
タイムラプラス撮影の全体構成
たとえば、植物を1時間に1回決まった時間に撮影して、1か月分をラプラス動画に変換すると、その期間の成長過程が確認できます。
まずは、タイムラプラス撮影を行うために以下のパッケージをインストールします。
・fswebcam : USBカメラ撮影
・feh : 画像確認
・ffmpeg : タイムラプス動画への変換
以下のコマンドで必要なパッケージをインストールします。
$ sudo apt-get install fswebcam feh ffmpeg -y
次にカメラ撮影用のシェルスクリプト(camera.sh)を作成します。
実行すると、”撮影日時.jpg“というファイル名で撮影画像が保存されます。
<camera.sh>
fswebcam -r 1920x1080 --no-banner -D 2 /home/user1/camera_timelapse /Pictures/date +%Y%m%d%H%M%S
.jpg
オプション説明:
•-r : 撮影解像度サイズを指定
•–no-banner : 撮影情報テキストの表示無効
•-D : ディレイ値、2秒後に撮影
上で作ったシェルスクリプトを定期的に実行するのでcrontabに登録します。
$crontab –e
以下の内容を追加すると、1分毎にcamera.shが実行されます
*/1 * * * * /home/user1/camera_timelapse/camera.sh
cronの書式は以下です。
分 時 日 月 曜日 ‘実行したいコマンドまたはスクリプト’
参考までに、以下が記載例です。
【参考】crontabの記載例 毎日6時にプログラムを実行する 00 6 * * * python /home/hoge/script1.py 毎時10分にプログラムを実行する 10 * * * * python /home/hoge/script2.py 15分毎にプログラムを実行する */15 * * * * python /home/hoge/script2.py 毎月20日10:00にプログラムを実行する 00 10 20 * * python /home/hoge/script3.py 毎週月曜日10:00にプログラムを実行する 00 10 * * 1 python /home/hoge/script4.py cronでプログラムが動かない場合 2分毎にプログラムを実行し、エラーログを確認する */2 * * * * python /home/hoge/script5.py 2> /home/hoge/script5.log
最後にタイムラプラス動画を作成します。
撮影日時のファイル名で画像を保存したのですが、名前が連番になってないと動画変換ができないようなので、一括でリネームします。
find . -name '*.jpg' | sort -n | awk 'BEGIN{ a=0 }{ printf "mv \"%s\" %03d.jpg\n", $0,a++}' | bash
以下のようなファイル名になります。
000.jpg 001.jpg 002.jpg ・・・
あとは、以下のコマンドで撮影した画像をタイムラプラス動画に変換します。
ffmpeg -framerate 30 -i %03d.jpg -vcodec libx264 -pix_fmt yuv420p -r 60 out.mp4
実際にラプラス動画を作成してみました。
何かそれっぽい映像になっていますね。