Raspberry Pi でWebカメラ (4) M-JPEG streamerをつかったストリーミング配信

投稿者: | 2015年10月2日

USB Webカメラの接続、無線LANの設定まで終わりましたので、あとはストリーミングサーバーを設定すれば、外出先からアクセスすることができるようになります。手順としては、「Raspberry Piで遊ぼう!」の 5-3 Webカメラを利用しようの内容そのままです。

MJPG-streamer のインストール

ストリーミングサーバーのMJPG-streamerをRaspberry Piにインストールします。お手軽に apt-get できないそうなので、頑張ってビルドします。Raspberry Pi にSSHでログインして、以下のようにインストールとMakeを行います。

$ sudo apt-get install subversion libjpeg-dev imagemagick
$ svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer
$ cd mjpg-streamer/mjpg-streamer
$ make
$ sudo install
$ 

これでインストールは終わりです。/usr/local/bin/mjpg_streamer としてインストールされてました。なお、make は1~2分では終わらなかったと思いますので、終わるまで別の作業をするとかコーヒーを飲んでまったりするなどして待ちましょう。

MJPG-streamer の起動

今度はこのM-JPEG Streamerを起動して、ブラウザから見られるようにしてみます。

$ LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_uvc.so -f 2 -r 320x240 -d /dev/video0 -y" -o "output_http.so -w /usr/local/www -p 8080 -c test:1234"

オプションの内容は以下の通りです。

  • 解像度(画面サイズ:ピクセル) : 横320 x 縦240
  • 入力デバイス: /dev/video0 (USB Webカメラ)
  • 出力先ディレクトリ: /usr/local/www
  • ポート: 8080
  • アクセス用のBASIC認証情報: ユーザー名 「test」 パスワード「1234」

というわけで、手元のWebブラウザから、設定したIPアドレスにアクセスします。

http://XXX.XXX.XXX:8080/

このとき、ブラウザでBASIC認証画面が開くので、設定したID/PASS(上記の例だと、 test と 1234)を入力すると、

mjpg_streamer_top

のような画面が表示されます。この画面をスクロールすると、Webカメラで撮影された内容が表示されています。そのストリーミング内容が、撮影対象とあっていればオッケーです。

MJPG-Streamerの自動起動設定

さて、無事にストリーミングサーバーが動作することがわかったら、Raspberry Piの電源がONになったら自動でストリーミングを開始できるように設定しましょう。

今回は、起動スクリプトを作って、/etc/rc.local からそのスクリプトを起動するようにします。 /home/pi/tool ディレクトリにstream.shという名前で置いてみました。

#!/bin/sh

# This is Web-streaming server start up script.for raspi
# No warrantly.

# Config
PORT="8080"
ID="MJPGUSER" # 適宜変更してください
PW="SECRET" # 適宜変更してください
SIZE="640x480" # 320x240でも良いです
F_RATE="5" # 5 fps なので 1秒5コマです。
MJPG_STREAMER=/usr/local/bin/mjpg_streamer

export LD_LIBRARY_PATH=/usr/local/lib
$MJPG_STREAMER \
-i "input_uvc.so -f $F_RATE -r $SIZE -d /dev/video0 -y" \
-o "output_http.so -w /usr/local/www -p $PORT -c $ID:$PW" &

スクリプト中にコメントつけましたが、CPU負荷やネットワーク回線の帯域幅などを考慮して、解像度やフレームレートを変更すると良いと思います。

さて、OS起動時にこのスクリプト(stream.sh)を起動するようにします。


$ sudo vi /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi

sh /home/pi/tool/stream.sh # この行を追加

exit 0

ファイルを保存したら、あとはためしにOSを再起動して、そのあとでストリーミングサーバーが無事動作していればOKです。

普通のPC(Windows, Mac OS)やスマートフォン/Tablet (iOS, Android)のブラウザからも見ることができます。

mjpg_streamer_monitoring

このように、外出先でもペットの様子を眺めることができます(笑)。

Raspberry Pi でWebカメラ (4) M-JPEG streamerをつかったストリーミング配信」への2件のフィードバック

  1. ピンバック: Raspberry Pi 2 のカメラを motion から MJPG-streamer に変更 | Home Made Garbage

  2. ピンバック: 【RaspberryPi3】WEBストリーミング配信に挑戦1 | RURALWEB

コメントを残す