停電から復旧時は自動的に起動させたい
mjpg_streamer設定
- source forge (http://sourceforge.net/projects/mjpg-streamer/develop)のfileからmjpg-streamer_r94-1_i386.debを入手しインストール(普通に sudo dpkg -i jpg-streamer_r94-1_i386.deb)
- 利用しているJava applet cambozola.jar は同梱よりちょっと新しいのがあるので http://www.charliemouse.com/code/cambozola/ から持ってくる(cambozola.jar だけでOK)
- 適当なディレクトリにcambozola.jarを配置。/var/wwwとかでも構わない。ここでは/home/httpd/mjpg_streamer/とした。
- Webカメラを接続してみる。lsusbして接続を確認。 ls /dev/video* としてモノがあるのを確認。ここでは /dev/video0だったとする。複数ある場合はデバイス名を固定する方法があったはず....スマンがそれはgoogle先生に聞いてください。
- ログインしているユーザで mjpg_stremaer をとりあえず起動してみる。
/usr/bin/mjpg_streamer -i input_uvc.so -d /dev/video0 -o output_http.so -p 9999 -www /home/httpd/mjpg_streamer
- パーミッションが無いと怒られた場合は、ls /dev/video0 で表示されたグループが現在のユーザのグループに入ってない。usermodなどでそのユーザを追加し、再ログインする。
- ちょっと本格的に。Webカメラに合わせてフレームレートとサイズを指定している。ここでは1FPS、サイズは1280x720。どんなサイズを指定できるかはカメラに依存する。各自調査されたし。
/usr/bin/mjpg_streamer -i input_uvc.so -d /dev/video0 -f 1 -r 1280x720 -o output_http.so -p 9999 -www /home/httpd/mjpg_streamer
ちゃんとうごきだすとCTRL+Cでストップするまで端末に戻ってこない。
- このままでWebブラウザから閲覧する。motion-jpegに対応したブラウザなら直接ストリームを見れる。google chromeとか。 http://《ipアドレス》:9999/?action=stream とする。自分自身なら当然 http://127.0.0.1:9999/?action=stream
- 試しにcambozola.jarを使ってみる場合は、手元にcambozola.jarを持ってきた後、
java -jar cambozola.jar http://《ipアドレス》:9999/?action=stream -width=1280 -height=720 -accessorystyle=overlay
mjpg_streamerと違うサイズを変更することもできるが、mjpg_streamer側から送られている画像を指定サイズに変換しているだけみたい。通信が軽くなる訳ではない。左肩に表示されるコントロールはデジタルズーム相当の機能
共存
mjpg_streamerはhttpサーバの機能を持っているが、これを80番ポートで運用するとApacheとかと競合する。
競合を避けるため、mjpg_streamerは9999ポートでリッスンし、Apacheの方で工夫してやる。
今回はApacheのproxy機能を使って /stream/ へのアクセスがあったら 《mjpg_streamerマシンのipアドレス》:9999へ渡すようにした。
ubuntu(10.10)の場合は /etc/apache2/mods-available/proxy.conf に追記する必要がある。# If you want to use apache2 as a forward proxy, uncomment the # 'ProxyRequests On' line and the block below. # WARNING: Be careful to restrict access inside the block. # Open proxy servers are dangerous both to your network and to the # Internet at large. # # If you only want to use apache2 as a reverse proxy/gateway in # front of some web application server, you DON'T need # 'ProxyRequests On'. #ProxyRequests On # # AddDefaultCharset off # Order deny,allow # Deny from all # #Allow from .example.com # # Enable/disable the handling of HTTP/1.1 "Via:" headers. # ("Full" adds the server version; "Block" removes all outgoing Via: headers) # Set to one of: Off | On | Full | Block #ProxyVia Off ProxyRequests OffOrder deny,allow Allow from all ProxyPass /stream http://《mjpg_streamerマシンのipアドレス》:9999 ProxyPassReverse /stream http://《mjpg_streamerマシンのipアドレス》:9999 ProxyVia On
これで、 http://《webサーバのアドレス》/stream/?action=stream でストリームが見れるようになった。職場のF/W越えも出来てウハウハである。
自動起動対応
- マシンのBIOS設定を変更し、停電後は起動するようにする。AC RECOVERYとか。
停電から復帰時にどうするかの設定。Onは電源On。Offは電源Off。Lastは停電前の状態にする。今回はOnとした。
/etc/rc.local
(/bin/su - 《ユーザ名》 《実行するスクリプト》> 《logファイル名へのフルパス》 2>&1 ) &
フルパスで指定する。
スクリプトは最初に30秒スリープさせている。/etc/rc.localの走るタイミングが早過ぎるらしく、スリープ無しで実行するとV4Lのエラーとなったため。カメラの認識前なのかな?
#!/bin/sh echo `date '+%Y/%m/%d (%a) %H:%M:%S (%Z)'`: delay 30 sec for start mjpg_streamer /bin/sleep 30 echo `date '+%Y/%m/%d (%a) %H:%M:%S (%Z)'`: start mjpg_streamer /usr/bin/mjpg_streamer -i "input_uvc.so -d /dev/video0 -f 1 -r 1280x720" -o "output_http.so -p 9999 -www /home/httpd/mjpg_streamer"
※http://d.hatena.ne.jp/DGL/20080119 を参考にさせて頂いた。
0 件のコメント:
コメントを投稿