手持ちの RaspberryPi に、近所のハードオフで 108 円で買ってきた USB カメラを接続して低速度撮影の実験をしてみました。RaspberryPi を用いた場合、本体も非常に軽くコンパクトで、HDD のような可動部分もなく、USB 給電の 5V だけで動作するので、こういった実験には気軽に使えて最適です。また、撮影から動画生成に必要なツールも一式簡単にインストールできます。
部屋の窓から空の様子を 1 コマ/分で静止画撮影し、撮り溜めた静止画を結合して動画に仕上げてみました。秋雨前線のまっただ中のため曇り空しか映りませんでしたが、それでも雲の流れがよく判ります。晴れた日の空の方が、雲の動きが判りやすく面白い動画になると思います。
apt-get で必要な関連ツールなども含めて一発でインストールできます。ちなみに、別件で ffmepg をソースコードからビルドした際にはかなり時間がかかりました。今回はそこがメインではないので、簡単にパッケージからインストールするだけに留めます。
$ ### motion パッケージをインストール $ sudo apt-get install motion $ motion --version motion Version 3.2.12 # uname -a Linux raspi.dev 4.1.6-v7+ #810 SMP PREEMPT Tue Aug 18 15:32:12 BST 2015 armv7l GNU/Linux
今回は使わないので、動体検知関係、動画保存関係のオプションを軒並みオフにして、スナップショットを保存する設定を有効にします。ライブ配信が本来の目的ではありませんが、ライブカメラ機能を利用してカメラの映像を確認できるようにしておくとセッティングが捗ります。
$ sudo vi /etc/motion/motion.conf ### カメラからキャプチャする画像サイズ width 320 height 240 ### 静止画キャプチャで負荷も問題なさそうなので少し高めにしてみた quality 85 ### MPEG 動画のリアルタイム変換は利用しない ffmpeg_cap_new off ### スナップショットを60秒ごとに生成する snapshot_interval 60 ### 画像に挿入されるキャプション(右下)に日付と時刻を設定 text_right %Y-%m-%d\n%T ### 動体検知は使っていないので動体検知で変化した画素数を表示しない text_changes off ### キャプチャ画像を保存するディレクトリ target_dir /home/pi/motion ### スナップショットを保存する際のファイル名 snapshot_filename %Y%m%d/%H%M%S ### ライブカメラ機能で接続するポート番号 webcam_port 8081 ### ライブカメラと制御パネルには localhost 以外からの接続を許可する webcam_localhost off control_localhost off
設定が終わったら motion を起動して、毎分ごとに /home/pi/motion にスナップショットが保存されていることを確認します。ライブカメラ機能も生きているので、カメラの方向やピントの合わせを確認するには、別マシンから http://raspi.dev:8081/
にアクセスします。カメラのセッティングが済んだら、スナップショットが撮り溜まるまでそのまま一日ほど放置します。
### バックグラウンドで起動する。これでログアウトしても OK $ sudo nohup motion & ### 止める場合、motion プロセスを探して $ ps aux | grep motion ### Ctrl+C シグナルを送って止める。-KILL だと /dev/video0 を握りっぱなしになる? $ sudo kill -INT 12345
毎分毎に生成されたスナップショットの静止画を結合して動画を生成します。動画への変換には、motion のインストール時に併せてインストールされているはずの ffmpeg を利用します。
### スナップショットが保存されたディレクトリに移動 $ cd /home/pi/motion/20150908 ### ファイル名を 0 始まりの連番ファイル名に変更する $ ls -1 | perl -nle 'rename($_,sprintf("%04d.jpg",$.-1))' ### 連番ファイル名の静止画を動画に変換する $ time ffmpeg -f image2 -r 15 -i %04d.jpg -r 15 -an -vcodec libx264 -pix_fmt yuv420p video.mp4 real 7m19.001s user 7m16.980s sys 0m0.420s
スナップショットは日没後も深夜も構わず、真っ黒な画像生成されるので、日の出直前から日没後までの画像だけで動画を生成した方が良いでしょう。ffmpeg による動画への変換処理などを cron などで自動処理できるようにしておけば、空の様子を長期間に渡って録画&配信するような Web サーバも簡単に作れそうですね。