スポンサードリンク

2014年9月25日木曜日

LIVAでかんたん監視カメラ

ECS LIVA White

世間を賑わしている小型省電力PC「LIVA」。コミコミで1万円台という低価格ながら、オフィススイートやネットサーフィンなら問題なくこなすことができる優れモノ。
そんな優秀なLIVAですが、今回はWebカメラと組み合わせ、監視カメラを作ります。いきった言い方をするならアプライアンス化です。


概要

今回作るのはWebカメラの映像をストリーミングするだけのものです。録画もしませんし、はたまた動体検知もしません。ただ黙々と映像をストリーミングしてもらいます。
具体的にはWebカメラの映像をVLCでストリーミングします。クライアントにもVLCをインストールし、VLCからLIVAのアドレスを叩いて監視カメラの映像を見ます。画質は480Pとしています。

手軽にするため、LIVAの電源ボタンを押すとストリーミングが始まり、もう一度電源ボタンを押すと切れるようにしています。


構成

本体LIVA-C0-2G-64G-W
OSDebian Jessie 64bit Bate1
WebカメラLogicool C525

使用したLIVAは白。初代の黒に比べストレージが32GBから64GBに倍増している分です。黒色よりも圧迫感がなくていいです。
LIVA Black and White

OSはDebian Jessieです。LIVAがストレージとして採用しているeMMCの都合でWheezyは外しました。

WebカメラはLogicool C525です。グレード的には中間の製品です。
このほか以下のWebカメラで確認しています。いずれもLogicool社の製品です。

C270C525C910C920
C270は映像のみで音声が出ませんでした。ほかは映像・音声ともに良好です。

コスト的にもカラー的にもなんとかC270で動かしたいところです。

OSのインストール

それでは構築していきます。

インストールには「debian-jessie-DI-b1-amd64-netinst.iso」を用いました。netinstイメージには余計なものが含まれておらず構築に最適です。
JessieではeMMCが見えるので、特に気にすることはなくインストールできます。

rootは空欄にし、初期ユーザにsudoを割り当てました。
途中のtaskselではSSHとStandard System Utilityを選択しました。SSHだけでもいいですが、serviceコマンドが標準で使えるのは楽です。

aptのcdも無事コメントアウトされインストール終了。


初期設定

初回起動するときに感じると思いますが、GRUBの選択画面が長いので短くします。
$ sudo nano /etc/default/grub

# 下記の値を変更する
GRUB_TIMEOUT=2 ←5秒待ちから2秒待ちに変更

$ sudo update-grub


VLCのインストール

要のVLCをインストールします。
$ sudo apt-get update
$ sudo apt-get install vlc
/etc/apt/sources.listにcontribとnon-freeを追記しなきゃだめかなと思いましたが、標準のままで問題無しです。


ストリーミングテスト

早速ですがテストをします。

・本体
WebカメラをLIVAのUSBに接続してから以下のコマンドを入力します。
$ cvlc v4l2:///dev/video0 :input-slave=alsa://hw:1,0 :v4l2-width=640 :v4l2-height=480 \
--sout="#transcode{venc=x264{subme=5,ref=3,bframes=16,b-adapt=1,bpyramid=none,weightp=0},\
vcodec=h264,vb=600,scale=1,acodec=mp3,ab=96,channels=1,samplerate=11025,threads=2}:\
rtp{sdp=rtsp://:8554/webcam}"

#終了は[Ctrl]+[C]
スペースの都合で改行しています。これらのオプションは「480pならコレ!」といった感じで、あるサイトで紹介してあったものを改変して使っています。
残念ながらメモ書きを紛失してしまいサイト名書けません。すみません・・・。

実行すると赤字でなにやらエラーめいたことを言われますが動きます。

・クライアント
クライアントのVLCからLIVAにアクセスします。
VLCを実行後、[Ctrl]+[N]と入力するとネットワークストリームが開けるのでアドレスを入力します。
rtsp://LIVAのアドレス:8554/webcam
先に音声が流れ始め、8秒ほど経つと映像も映るようになります。
タイムラグが3秒ほどあるので完全なリアルタイムストリーミングではありません。


起動時にVLCを自動実行

動作することがわかったので、起動時に先ほどのコマンドが実行されるようにします。幸いにもVLCは一般ユーザで大丈夫なため、cronで設定することができます。
$ crontab -e

#途中、エディタを選ぶように言われたので1のnanoを選択

#以下を末尾に追記
@reboot cvlc v4l2:///dev/video0 :input-slave=alsa://hw:1,0 :v4l2-width=640 :v4l2-height=480 --sout="#transcode{venc=x264{subme=5,ref=3,bframes=16,b-adapt=1,bpyramid=none,weightp=0},vcodec=h264,vb=600,scale=1,acodec=mp3,ab=96,channels=1,samplerate=11025,threads=2}:rtp{sdp=rtsp://:8554/webcam}"
再起動後、Webカメラのランプが点灯し、クライアントからアクセスできれば成功です。


電源ボタンでシャットダウン

電源ボタンで起動するなら、電源ボタンでシャットダウンしたいものです。
ACPIの設定を見てみます。
$ view /etc/acpi/events/powerbtn-acpi-support

event=button[ /]power
action=/etc/acpi/powerbtn-acpi-support.sh
どうやらスクリプトファイルに書かれているようなので見てみます。
$ view /etc/acpi/powerbtn-acpi-support.sh

#末尾抜粋
else
        # Normal handling.
        /sbin/shutdown -h -P now "Power button pressed"
fi
標準で電源ボタンを押すとシャットダウンされるようになっていました。
試しに押してみるとシャットダウンされました。
ストリーミングを実行したまま強制終了するのは気が引けますが、かれこれ100回近く終了していても問題は出ていません。
また、100時間連続起動もしてみましたが無問題です。

これで電源ボタンを押したら起動・ストリーミングが開始され、もう一度電源ボタンを押すと切れるような監視カメラが完成しました。


消費電力

待機時0.0W
起動時(最大)4.2W
ストリーミング時6W-7W台
TAP-TST8にて測定。接続はWebカメラ、LANケーブル、D-Subダミープラグ。BIOSは出荷時設定。


既知の不具合

・キーボードを挿しているとブートでこける
さっぱりわかりません。このLIVAにはWebカメラとLANケーブル、ACアダプタ以外挿しませんので問題ないです。

・モニタレス(ヘッドレス)だと起動しない
D-SubかHDMIのどちらかにモニタを接続していないと起動しません。コレかなり問題です。検証したところ手持ち(黒1台、白3台)のうち、白1台はモニタレスができているのでさらに謎。

しかたないのでD-Subにダミープラグを挿すことで解決を図りました。Youtubeに簡単なダミープラグの作り方を説明した動画がありましたが、必要となる抵抗がないので、日本橋に買い求めにいきました。各店舗で在庫聞いたところ無いと返答され、そもそもダミープラグを知らない店員の多すぎて、ダミープラグの説明からしなければなりませんでした。聞いた中ではPCドムとジョーシン、ドスパラの店員しか知りませんでした。ちょっと前までそれなりに売っていたと思うのに…。

すがる思いで検索したところAIDEXという会社がダミープラグを作っていることがわかりました。一般販路には流通していないらしくサポート窓口に連絡すると、在庫があったので販売していただけました。

届いたダミープラグをLIVAに挿すと、無事モニタレスで起動しました。
AIDEX VGA Dummy PlugInsert a Dummy Plug

ちなみに海外だと、こちらも小型PCで有名なfit-PCがオプションとして作っているHDMIダミープラグが米アマゾンで販売されています。HDMIダミーとかおもしろいです。


余談

なぜavconv(ffmpeg)を使わずVLCで配信しているのかという話ですが、導入当初、実験がてらUbuntu 14.04.1入れ、標準で入るavconv + avserverで試してみたところ、avconvを終了し再度起動するにはWebカメラを抜き差しするかシステムを再起動しなければ配信できない状況に陥ってしまいあきらめました。
次にavconvをwikiのとおりコンパイルしてみましたが、映像は配信されるものの音声が配信されず、あきらめました。
で最後、ふとVLCで試したところ簡単に動いたので、VLCにしたといったところです。要は私のスキル不足です。


次の目標

現在はRTSPを用いてますが、将来iPadやiPhoneでも手軽に見られるようHLSで配信できるようにしたいです。


参考



関連商品

ECS 小型ベアボーンPC LIVA MINI PC KIT 64GBモデル LIVA-C0-2G-64G-W
Elite (2014-08-09)
売り上げランキング: 1,013

LOGICOOL HDウェブカム C525
ロジクール (2011-06-03)
売り上げランキング: 923

0 件のコメント:

コメントを投稿