<Raspberry Pi-50>

最新OSのRaspbian stretchでのmjpg-streamerを、やっていきます。

mjpg-streamerについては、<Raspberry Pi-17>、<Raspberry Pi-18>で紹介していますが
ここでは、今一度インストール、mjpg-streamerの起動(webカメラ映像の配信)、webブラウザ(Chrome)で見る、までを紹介します。

****************
* インストール *
****************
mjpg-streamerのインストールは、apt-get installコマンドでインストールが出来ない。
ソースファイルをダウンロードして、コンパイルしてインストールする。

@pi@raspberrypi:~ $ sudo apt-get install subversion libjpeg-dev imagemagick

もし、「いくつかのアーカイブを取得できません。
apt-get update を実行するか --fix-missing オプションを付けて試してみてください。」が出たら
pi@raspberrypi:~ $ sudo apt-get updateのあと再度インストールする。

MJPG-streamerのソースファイルをダウンロード
Api@raspberrypi:~ $ svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer

プログラムのコンパイルと、インストール
Bpi@raspberrypi:~ $ cd mjpg-streamer
Cpi@raspberrypi:~/mjpg-streamer $ make
Dpi@raspberrypi:~/mjpg-streamer $ sudo make install

***********************
* mjpg-streamerの起動 *
***********************
コマンドラインから行います。(SSH接続でWindowsPCからの操作が便利)

入力文字が多いので1行が長い
pi@raspberrypi:~ $ LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_uvc.so -f 10 -r 320x240 -d /dev/video0 -y" -o "output_http.so -w /usr/local/www -p 8080 -c mjpg:0000"

それで、複数行にした(バックスラッシュ(\)で複数行にしている)
pi@raspberrypi:~ $ LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i \
"input_uvc.so -f 10 -r 320x240 -d /dev/video0 -y" -o \
"output_http.so -w /usr/local/www -p 8080 -c mjpg:0000"

どちらかで、起動する。

*******************************
* webブラウザ(Chrome)から接続 *
*******************************
webブラウザ(Chrome)にアドレス http://192.168.31:8080/ を入力
ユーザ名:mjpg を入力
パスワード:0000 を入力



以上で、「インストール、mjpg-streamerの起動、webブラウザ(Chrome)で見る」までが出来ました。

映像を見るのに、Javascriptをクリックしないと見れないのがわずらわしいので、直接シンプル映像を
見る設定をします。それと、ログイン名、パスワード入力なしにする。mjpg-streamerをバックグランドで
動作させる(コマンドラインが使える)それと、エラー表示させない起動設定をやって見ます。

直接シンプル映像を見るようにするには、/usr/local/wwwフォルダにあるindex.htmlの名前を例えば
index.html_orgにして、stream_simple.htmlの名前をindex.htmlにすればOKです。

シンプル映像


次に、起動設定を下記のようにする

@-nを付ける
・・・video0 -y -n・・・
A-bを付ける
・・・www -p 8080" -b・・・
B -c mjpg:0000を削除する

pi@raspberrypi:~ $ LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i \
"input_uvc.so -f 10 -r 320x240 -d /dev/video0 -y -n" -o \
"output_http.so -w /usr/local/www -p 8080" -b

プロンプトが出ているので、コマンドライン操作が出来る


ログイン名、パスワードが求められず映像が見れる

停止する場合は pi@raspberrypi:~ $ sudo kill -9 875 とする。875はPID番号


「参考 コマンドラインオプションの意味」

-b バックグラウンドで起動。デーモンになる。停止する場合は kill -9 875 とする。875はPID番号
   ( 起動したときに表示 enabling daemon modeforked to background (875))

-i 入力修飾子を指定する(-i 以降にダブルクォーテーションでくくって指定する)
   例 -i "input_uvc.so -f 10 -r 320x240 -d /dev/video0 -y -n" 

   -d カメラデバイス 
   -r 解像度(QSIF/QCIF/CGA/QVGA/CIF/VGA/SVGA/XGA/SXGA あるいは 横幅x縦幅) 
   -f フレームレート[fps] 
   -y YUYVフォーマットを指定するか否か(MJPEGがウェブカメラでサポートされていない場合) 
   -q JPEGのクオリティ(1-100) 
   -m 最小サイズ。ウェブカメラがゴミフレームを送ってくる場合にそれを除外するために指定する。 
   -n dynctrlsを初期化しない。(カメラ操作無効か?) 
   -l LEDの状態。(on/off/blink/auto) 

-o 出力修飾子を指定する(-o 以降にダブルクォーテーションでくくって指定する)
   例 -o "output_http.so -w /usr/local/www -p 8080 -c test:1234"

   -p ポート 
   -w ウェブコンテンツのあるディレクトリ。/usr配下にインストールした場合は/usr/www。 
   -c 認証情報。ユーザ名とパスワードを「:」区切りで指定する。 
   -n デモページのControlでのコマンド実行を無効化する。(Brightnessなどが変更できなくなります) 

<タイトルと日付表示のindex.html>



上記、ライブ映像のindex.html(<は半角にすること)
---------------------------------------------------------------------------------------------------
<html>
  <head>
    <title>MJPG-Streamer - Stream Example</title>
  </head>
  <body>

JA3RUA Live Video
<br>

<p id="Clock1" style="display: inline"></p>
 <script type="text/javascript">
 setInterval('showClock1()',1000);
 function showClock1() {
 var DWs = new Array('Sun.','Mon.','Tue.','Wed.','Thu.','Fri.','Sat.');
 var Now = new Date();
 var YY = Now.getYear();
 if (YY < 2000) { YY += 1900; }
 var MM = set0( Now.getMonth() + 1 );
 var DD = set0( Now.getDate() );
 var DW = DWs[ Now.getDay() ];
 var hh = set0( Now.getHours() );
 var mm = set0( Now.getMinutes() );
 var ss = set0( Now.getSeconds() );
 var RTime1 = ' ' + YY + '.' + MM + '.' + DD + ' ' + DW + ' ' + hh + ':' + mm + ':' + ss + ' ';
 document.getElementById("Clock1").innerHTML = RTime1;
 }
 function set0(num) {
 var ret;
 if( num < 10 ) { ret = "0" + num; }
 else { ret = num; }
 return ret;
 }
 </script>
<br>

<!--    <center>    -->
      <img src="/?action=stream" />
<!--    </center>   -->
  </body>
</html>
---------------------------------------------------------------------------------------------------

<次に、Raspberry Piの電源ON時にmjpg-streamerが起動するようにする>

@webcamera.shを/usr/local/wwwフォルダに作成

webcamera.sh
-------------------------------------------------------------
#!/bin/sh
LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer \
-i "input_uvc.so -f 10 -r 320x240 -d /dev/video0 -y -n" \
-o "output_http.so -w /usr/local/www -p 8080" -b
-------------------------------------------------------------
動作できるようにwebcamera.shのパーミッションを変更
pi@raspberrypi:~ $ sudo chmod 755 /usr/local/www/webcamera.sh

A/etc/rc.localファイルを下記のように変更

sudo /usr/local/www/webcamera.shをfiとexit 0の間に追加

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

sudo /usr/local/www/webcamera.sh

exit 0
---------------------------------------------------------------------

BRaspberry Piを再起動する

<参考>
停止はpi@raspberrypi:~ $ ps ax を打ち込んでmjpg_streamerが動いているPID(ここでは、1231)を確認する
1231 ?        Sl     3:00 mjpg_streamer -i input_uvc.so -f 10 -r 320x240 -d /dev/video0 -y -n -o output_http.so -w /usr/local/www -p 8080 -b

次のコマンドを打ち込むと停止
pi@raspberrypi:~ $ sudo kill -9 1231

再度起動は、pi@raspberrypi:~ $ sudo /usr/local/www/webcamera.sh



Raspberry メニューに戻る</A>