日々変化するものを映像や画像で記録しておきたいときに

いまやスマホ一つあれば、気軽に映像や画像を残しておくことができるようになりました。旅行やレジャーで、記録や記念にとっておくにはそれで十分事足ります。少し前に、20年前と現在のテクノロジーを比較した話題もありましたね。

スマートデバイス

テクノロジーの進化はすごいですね…

スマホは確かに万能選手ですが、日々変化するものを継続的に記録しておきたい場合には(定点観測など)、データ領域が足りなくなってしまったり、電池がなくなったりしてしまいます。(そもそもそういう用途向けに作られているわけではないので、当たり前だと言われてしまいそうですが)
スマホ以外に何か身近な機器で実現できないかな…そんなことを考えて、今回はライブストリーミングや定点観測ができるシステムを作ってみました。

色々と調べていくうちに、生後間もない赤ちゃんの、反射でしか出てこない笑顔の瞬間を撮影している方がいました。これは思わず「なるほど!」と思いました。筆者は独身ですが、もし子供ができたら、そんな決定的瞬間をこの目で見たいと思います。
思わぬ形で「仕事の合間や細切れの時間に、気になるものの様子を見られる」かもしれません。

システムのイメージ

今回構築したシステムのイメージは以下のような形です。

取り組みイメージ

システムのイメージ

ハードウェアが非常に小さいので、システム全体としてもコンパクトに作ることができます。

使用したもの

実験で使用したものは下記のとおりです。

  • Intel製小型コンピュータ(NUC BOXDC3217IYE)
  • Webカメラ(Logitech Webcam Pro 9000)
  • CentOS 6.4 64bit

Intel製小型コンピュータ(NUC BOXDC3217IYE)にはVESAマウントが付属しています。ディスプレイの背面に取り付けて使うことができます。
http://weekly.ascii.jp/elem/000/000/119/119032/(参考画像、他サイトへリンク)
スペックはこちら(IntelのWebサイトへ飛びます)

【外観イメージ】

インターフェース上面

上面2真上

Webカメラは一昔前のもので、現在はもっと安価で性能のいいものがあるかもしれません。ただ、使ってみた印象ではかなりキレイに写っていました。

WebカメラWebカメラの画像

(一部加工しています)

システムのセットアップ

①motionのインストール

motionという動体監視/検知プログラムを使います。まずは以下のサイトからソースをダウンロードします。
http://www.lavrsen.dk/foswiki/bin/view/Motion/DownloadFiles

ダウンロードしたファイルを解凍します。
$ tar xvzf motion-3.2.12.tgz
コンパイラがない場合はあらかじめインストールします。
# yum install gcc*
画像ライブラリのインストール
# yum install libjpeg*
動画ライブラリのインストール(要リポジトリ追加)
# rpm -ivh rpmforge.rpm
# yum install ffmpeg*
インストール
# cd motion-3.2.12
# ./configure
# make
# make install

②motionの設定

motionの設定ファイルは /usr/local/etc/ にありますので、オリジナルをコピーした後にファイルを編集していきます。パラメータは多岐にわたるので、個別の説明については割愛します。
例えば解像度などを設定することができます。
$ vi motion.conf

③motionの起動と停止

Deamon経由で操作を行います。まずは設定ファイルでDaemonを有効にします。

# Start in daemon (background) mode and release terminal (default: off)
daemon on

【起動】
# /etc/init.d/motion start

【停止】
# /etc/init.d/motion stop

【再起動】
# /etc/init.d/motion restart

溜まり続けるデータをどこに保存するか

今回使用したハードウェアではmSATA 64GB SSDを搭載していますが、動画のフレームレートを高くしたり、データが増え続けると、あっという間にいっぱいになってしまいます。そこで、空いているUSB3.0ポートを使って、生成されるデータを外付けハードディスクに保存することにしました。

RebDrive USB3.0

これで24時間データを保存しておくことができます。仮に(多めに見積もって)一日5GBとすると、1TBのハードディスクであれば200日くらいもちます。データの保存先はmotion.confのtarget_dirで設定することができます。デフォルトでは /var/spool/motion/ 以下に保存されます。ハードディスクは任意の形式にフォーマットして、適当な場所(/mntなど)にマウントすればOKです。今回は、動体検知した場合に映像をaviファイルで記録し、検知時に画像をjpgファイルで保存するようにしました。

実際の使い方

Webブラウザを起動して、IPアドレス:8081(192.168.1.2:8081など)を指定します。外部に公開してインターネット経由で閲覧したい場合には、フォワードプロキシやリバースプロキシ設定を行います。手元の環境ではノートパソコン(MacBook Pro)を使って、Chrome、FireFox、Safariのいずれでもストリーミング表示することができました。

iPadでも試してみました。

そしてこちらがサーバに保存されたデータです。

6:00〜6:30くらいでは、イチローがホームランを放って走っている様子や、投手が悔しがっている様子を捉えています(笑)

画面に表示されている白い枠は、motionが動体として検知している箇所です。かなり正確に捉えられています。動物の行動を観察したりもできそうですね。設定ファイルのパラメータをいじってみて、どの程度まで細かいことができるのか随時検証していきたいと思います。

システム構成図とサービススタック

実際に運用する場面を想定すると、このような形になります。

サービススタックシステム構成図

例えば、メールサーバと連携させて、動体検知した場合にスマホにアラートメールを飛ばすことができます。また、motionが保存したデータをSmabaやFTPを使ってLAN上に公開すれば、誰でもデータを取得することができます。ダウンロードしたファイルをパソコンで編集して動画サイトに公開するといった使い方もできますね。

このシステムのデモを5/20(月)〜5/31(金)まで期間限定で実施します。ご興味のある方は是非店頭にお立ち寄り下さい。

☆関連商品のご購入はこちらから!
RebDrive USB3.0 アミュレットから購入 Amazon.co.jpから購入

Intel製小型コンピュータ(NUC BOXDC3217IYE)
mSATA 64GB SSD+8GB メモリ付き:税込 ¥63,000 ⇒ こちらから
お問い合わせ下さい