ブラウザから操作できるライブ(監視)カメラを作る(Mjpg-streamer 編)!




前回は、

ブラウザから操作できるライブ(監視)カメラを作る!

を実現した。

この際、専用カメラモジュールからの映像は、

・RPi_Cam_Web_Interface

を利用して配信していた。

私個人としては、これで全く不自由はない。

が、一般的には

・mjpg-streamer

を使うらしい。

ということで今回は、

『ブラウザから操作できるライブ(監視)カメラを作る!(mjpg-streamer 編)』

を実現してみたいと思う。

  1. はじめに
  2. Mjpg-streamer の設定
  3. 必要な設定
  4. 結果
  5. まとめ

■はじめに

ここでは、

ブラウザから操作できるライブ(監視)カメラを作る!

の RPi_Cam_Web_Interface で実現している部分を、

・Mjpg-streamer

で実現するように置き換える。

このため、それ以外の各種設定に関しては、

ブラウザから操作できるライブ(監視)カメラを作る!

と同様であることにご注意頂きたい。

■Mjpg-streamer の設定

まずは mjpg-streamer を使える様にする。

具体的にやる作業としては、

  1. インストール
  2. 起動・停止設定

となる。

以下、各々について記載する。

インストール

インストール自体は、

Raspberry Pi用カメラモジュールおよび赤外線カメラPi NoIRの映像をandroidで表示してみた
http://neuralassembly.blogspot.jp/2013/11/raspberry-pipi-noirandroid.html

のサイトで、起動・停止方法は

25 Sep 2013
Raspberry Pi camera board video streaming
https://miguelmota.com/blog/raspberry-pi-camera-board-video-streaming/

のサイトで記載している内容を実現すればよい。

が、両方チラチラ見比べるのも面倒。

ということで備忘録かねてまとめておく。

まずはリポジトリを update しておく。

root@raspi-03:~/# apt-get update

続いて、必要なものを install しておく。

root@raspi-03:~/# apt-get install libjpeg8-dev cmake

終わったら、mjpg-streamer のソースを取得。

root@raspi-03:~/# git clone https://github.com/jacksonliam/mjpg-streamer.git mjpg-streamer

なお、git が入っていない場合は、

root@raspi-03:~/# apt-get install git

で入れておこう。

ソースが取得できたら、ディレクトリ移動。

root@raspi-03:~/# cd mjpg-streamer/mjpg-streamer-experimental

その後、make でコンパイルする。

root@raspi-03:~/mjpg-streamer/mjpg-streamer-experimental# make

数分程度で終わるはず。

後は、

root@raspi-03:~/mjpg-streamer/mjpg-streamer-experimental# cd

でホームディレクトリに戻り、

root@raspi-03:~/# mv mjpg-streamer/mjpg-streamer-experimental /opt/mjpg-streamer

としてディレクトリごと /opt/mjpg-streamer に移動しておく。

インストール自体はこれで完了。

Stretch でも特に問題なくインストールできた。

起動・停止設定

続いて、起動・停止用のシェルスクリプトを用意しておく。

コンソールから起動する場合は、

root@raspi-03:~/# LD_LIBRARY_PATH=/opt/mjpg-streamer/ /opt/mjpg-streamer/mjpg_streamer -i "input_raspicam.so -fps 15 -q 50 -x 640 -y 480" -o "output_http.so -p 9000 -w /opt/mjpg-streamer/www" > /dev/null 2>&1&

とすれば起動できる。

これ自体が既に面倒だが、止めるときも面倒。

root@raspi-03:~/# pgrep mjpg

等でプロセスを特定し、kill コマンドで停止させないといけない。

正直これだと使う気にならないので、起動・停止用スクリプトを作る。

まずは起動スクリプト。

#!/bin/bash
if pgrep mjpg_streamer > /dev/null
then
    echo "mjpg_streamer already running"
else
    LD_LIBRARY_PATH=/opt/mjpg-streamer/ /opt/mjpg-streamer/mjpg_streamer -i "input_raspicam.so -fps 15 -q 50 -x 640 -y 480" -o "output_http.so -p 9000 -w /opt/mjpg-streamer/www" > /dev/null 2>&1&
    echo "mjpg_streamer started"
fi

これを、とりあえずここでは

/root/mjpg_streamer_start.sh

として保存する。

次は停止スクリプト。

#!/bin/bash
if pgrep mjpg_streamer
then
    kill $(pgrep mjpg_streamer) > /dev/null 2>&1
    echo "mjpg_streamer stopped"
else
    echo "mjpg_streamer not running"
fi

という内容を

/root/mjpg_streamer_stop.sh

として保存する。

これで、各々をコマンドラインから実行すれば、起動・停止できる。

ちなみに、自動起動させたい場合は

/etc/rc.local

exit 0

の前に、

sh /root/mjpg_streamer_start.sh

を記載しておけばよい。

■必要な設定

ここも、

ブラウザから操作できるライブ(監視)カメラを作る!

との差分部分だけを記載する。

差分は、index.html をいじる所だけ。

RPi_Cam_Web_Interface の場合には、

・『WebIOPi で遠隔操作(サーボモータ制御編)!

で作った index.html の中の、

・body 部分直下の div の直後の行

に、

・<iframe width=”640″ height=”480″ src=”http://[IP addess]/[Subfolder]/”></iframe>

を組み込んだ。

mjpg-streamer の場合でも同様にすればよいのだが、

・<img width=”640″ height=”480″ src=”http://[IP address]:9000/?action=stream” />

としても実現できる。

以上。簡単。

■結果

実際に動かしてみた結果がこちら。

画像だけを表示させたいなら、こちらの方がシンプルかな。

■まとめ

前回は、

ブラウザから操作できるライブ(監視)カメラを作る!

において、RPi_Cam_Web_Interface で画像配信していた。

で、今回はこれを Mjpg-streamer に置き換えてみた。

どっちがよいか、は正直好みかもしれない。

私個人としては、RPi_Cam_Web_Interface の方がよい。

理由としては、動画の録画、静止画のキャプチャも同時に実現できるから。

一方、余分な機能はいらない、自分で作るんだ!と言う人は、

Mjpg-streamer の方がシンプルで自由に設計できるだろう。

また、USB カメラを使うなら、Mjpg-streamer でないと無理っぽい。

まぁ、このみかな。やっぱり。




Copyright (c) 2017 Webmaster of this site All Rights Reserved.
カテゴリー: ラズパイで電子工作 タグ: , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください