<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>