Raspberry Pi でタイムラプス(低速度撮影)作ってみた。
アングルや撮影対象のセンスの悪さについてはノーコメントで…。
ちなみに、撮影にはRaspberry Pi カメラモジュール v1.3 を使っています。
続いて、タイムラプスの作り方を書いていきます。
1. 機材をそろえる
Raspberry Pi 3 Model B (Element14)
- 出版社/メーカー: RASPBERRY-PI
- メディア: エレクトロニクス
- この商品を含むブログ (1件) を見る
- Raspberry Pi カメラモジュール
Raspberry Pi ハイビジョン ビデオカメラ モジュール HD Video Camera Module
- 出版社/メーカー: Element 14
- メディア: エレクトロニクス
- この商品を含むブログ (1件) を見る
- microSDカード(16GBあれば十分)
【Amazon.co.jp限定】Transcend microSDHCカード 16GB Class10 (無期限保証) Newニンテンドー3DS 動作確認済 TS16GUSDHC10E (FFP)
- 出版社/メーカー: トランセンド・ジャパン
- メディア: Personal Computers
- この商品を含むブログを見る
3. Raspberry Pi でカメラを使えるようにする。
・カメラモジュールを Raspberry Pi につなぐ
・設定を変更する
sudo raspi-config
※ 6 Enable Camera ⇒ Yes ⇒ Finish
4. インターバル撮影用のスクリプトを保存する
・get_still.sh として保存する
#!/bin/sh COUNT=`cat count` OUTPUT_IMAGE=`printf "%08d.jpg" ${COUNT}` #capture image raspistill -o ${OUTPUT_IMAGE} -vf -w 1920 -h 1080 #count up expr `cat count` + 1 > count
※「-w 1920 -h 1080」で画像サイズを 1920*1080 に、「-vf」で上下反転しています。
・撮影画像の詳細を変更したければ下記コマンドで一覧が出ます。
raspistill --help
・timelapse.sh として保存する
#!/bin/sh for i in `seq 1 9999` do sh get_still.sh && sleep 1 done
※とりあえず約6秒間隔で9999回保存されます。(raspistill はデフォルトで1枚を5秒で撮影します)
#-tlオプションで時間も設定できますが、なぜかms単位なので使いづらい…。
-tオプションでタイムアウトする時間もms単位で設定できるが、最大値が不明。
5. インターバル撮影する
・画像を連番で保存するための初期値を設定する。
echo 0 > count
・インターバル撮影を開始する
sh timelapse.sh
※撮影前に1枚当たりのデータサイズは確認しておきましょう。
・撮影は「Ctrl + C」で止められます。
6. 動画を生成する
動画の生成には FFmpeg を利用します。インストール方法は下記記事を参照
・撮影画像があるディレクトリで下記コマンドを実行(ほぼ再生時間と同じくらいかかります)
ffmpeg -f image2 -r 15 -i %08d.jpg -r 15 -an -vcodec libx264 video.mp4
※連番 JPEG 画像群を 15fps の音声なし H.264 で video.mp4 という動画ファイル名に出力する。
これでタイムラプスの作成は完了です。お疲れ様でした。
6. 補足
撮影枚数と撮影時間
氷が解けるタイムラプスは1分程度ですが、撮影した画像は1222枚です。
1枚6秒間隔なので、撮影時間は約2時間。ほとんど放置していただけですが。
所感
タイムラプスは撮影を始める前の最初のアングルが重要だと思い知らされました。
最初から最後まで中心に撮影対象があるようにしないと、なんだか微妙になります…。
Raspberry Pi のカメラモジュールを固定する機材ってないんでしょうか?