本稿では Linux とMotionというプログラムを利用した映像配信システム構築について紹介しています。主に映像監視、定点観測等の用途を想定しています。
Motion は Webカメラの映像信号を監視、画像の変化を検知し、様々なアクションの実現を可能にする Linux環境で動作するプログラムです。オープンソースで開発が進められています。
Ubuntu など Debian系のOSでは必要なパッケージは揃っているので導入も容易です。カメラが撮影している映像に動きを検出した場合、その前の時点から映像をデータとして残すこと以外にも、
などが可能で、単に動きを検知して映像を記録するだけでなく、二次利用を想定した映像分析のプラットフォームを視野に入れていることがわかります。
また、動体検知だけでなく、観察、教育用途でニーズが高いと思われる、一定時間を置いて静止画を連続で記録し続ける定点観測のためのインターバル撮影の機能も備えています。
これにより、例えば、植物の成長過程や、四季による季節の移り変わり、積乱雲の発生過程、といった観察、研究、映像用途の活用が可能です。
また、最後に出力されたJPEG画像のシンボリックを出力することができるので、HPに公開して java 等で一定間隔で読み込むようにすれば、ネットワーク大域に付加をかけないライブ画像の配信に利用できます。
他にも、映像に変化がない場合にアクションを起すパラメータは見たところなさそうですが、motion が定期的に出力するディレクトリを監視すれば、一定時間変化がなければ、メールを送って知らせるなどといった安否確認の用途にも簡単に応用できそうです。
解像度やフレームレート、接続するカメラの台数、動体検知の動作頻度(観察対象)等々、条件や設定の絞り込みによって、求められる環境は、ハードウェア、通信帯域等、性能にはかなりの幅があるので一概には言えませんが、目安として本稿で確認した環境は以下のとおりです。
環境
Motionの主な設定(2台のカメラ共通)
USBカメラはマザーボード直付けで一つのUSBコントローラの下に2台のカメラがぶら下がっている環境です。複数の USB Controller を持つ環境ではカメラの接続先を分けたほうが大域を稼げます。
実際に Motion をデーモンモードで常時起動させた状態での大雑把な目安ですが、待機時と負荷時のロードアベレージは 30~60 程度でした。
2台のカメラの解像度をカメラ性能の上限まで上げたり、フレームレートを30に上げるのはUSB大域以前にこのCPUでは映像処理の点から無謀と思われるので試してません。
ただ、数分置きの定点観測や、接続するUSBカメラが1台であれば、更にロースペックの省電力CPUでも十分使用に耐える監視カメラシステムを構築できると思われます。
基本的に kernel-2.6.26 以上であれば "UVC規格" のUSBカメラを認識します。使用したUSB WebカメラはLogicool HD Webcam C270ですが CentOS6.4 で認識しています。
一部の機種ではチルト、パン、といった機能にも対応しているようですが、未検証です。
他にもRaspberry PiなどのARMアーキテクチャを利用した小型PCで組めば、低消費かつ、コンセントさえ引ければ設置場所を選ばない高性能な監視カメラシステムを構築することも可能で、ネットでも様々な情報が公開されています。
カメラが撮影している映像に動きを検出した場合、その前の時点から映像をデータとして残すこと以外にも、
などが可能で、単に動きを検知して映像を記録するだけでなく、二次利用を想定した映像分析のプラットフォームを視野に入れていることがわかります。
また、動体検知だけでなく、観察、教育用途でニーズが高いと思われる、一定時間を置いて静止画を連続で記録し続ける定点観測のためのインターバル撮影の機能も備えています。
これにより、例えば、植物の成長過程や、四季による季節の移り変わり、積乱雲の発生過程、といった観察、研究、映像用途の活用が可能です。
また、最後に出力されたJPEG画像のシンボリックを出力することができるので、HPに公開して java 等で一定間隔で読み込むようにすれば、ネットワーク大域に付加をかけないライブ画像の配信に利用できます。
他にも、映像に変化がない場合にアクションを起すパラメータは見たところなさそうですが、motion が定期的に出力するディレクトリを監視すれば、一定時間変化がなければ、メールを送って知らせるなどといった安否確認の用途にも簡単に応用できそうです。