RaspberryPi とWebカメラ、ウェアラブルカメラ、ドラレコで監視カメラを作る No.02構築手順

どうもSFです。
前回のこの話は前振りだけで終わるという・・・・
さて、今回はサクサクと構築手順です。
その前に使用する物の紹介です。
・RaspberryPi 3B+ https://amzn.to/32Wwkt7
・ウェラブルカメラ SJCAM M20 https://amzn.to/2yI5R5m
セットアップの前に条件として
・カメラとRaspberryPiは常設する
・上記から遠隔操作(SSH or VNC)必須
・ネットワークはWifi
・カメラUSB接続
・配信パッケージは MJPGStreamer を使用する。
[3台構成でラックも自作した様子]


完成したものを、OBSでWebページとして映像を表示して
あたかも専用カメラが繋がっている雰囲気で、
複数台をスイッチして使用する。
と言った感っじですね。
さてさて、構築手順をサクッと紹介
1.Raspberry Pi の初期設定
2.カメラの確認
3.MJPGStreamer のインストール&動作確認
途中、アップデートやデータのダウンロード作業があるので
ここは作業環境、状況により様々なので、時間がかかる場合もあります。
手慣れた方ならば、作業としては30分程度で完了する内容です。
(手を動かす作業としての時間ですダウンロードなどの待機時間は含まず)
1.Raspberry Pi の初期設定
やることは下記の項目1.sshとVNCのON
2.Wifi側のIP固定化
3.各種アップデート
です。わかっているよ!って方は飛ばしです。
1-.1sshとVNCのON
マジ初期からスタートする場合、マイクロSDカードにOSをインストールから始まります。が、そこらへんは割愛!
SSHとVNC接続が可能であることなどはやっているとします。
今回使用したOSのバージョンは
Linux raspberrypisj5 4.19.75-v7+ #1271 SMP Mon Sep 30 13:49:02 BST 2019 armv7l GNU/Linux
え?という方にはサクッと
メニューから設定、RaspberryPiの設定、インターフェイス内にSSHやVNCなどのON/OFFがあります。



ちなみにこのGUIでの変更は時々うまくいかないことがあった。これは個体の問題なのか?その時のバージョンによるものなのかは不明で、調べて解決するよりも確実な方法として、コマンドベースでの変更が確実です。
本体のLXTerminalから下記のコマンドでCLIっぽく変更可能
>sudo raspi-config
-- 5 Interfacing Options → P1 Camea P2 SSD P3 VNC を有効化
で、念のため再起動
>reboot
続いてWifi側のIP固定化です。
1-2.Wifi側のIP固定化
これも不要という方はサクッと飛ばしてw
やることは単純、設定ファイルに書き込んでWifiをON→OFFまたは再起動です。
LXTerminalから
>sudo nano /etc/dhcpcd.conf
最終行に下記を追加 XXX は空きアドレスと充当する値を入れる。
interface wlan0
static ip_address=XXX.XXX.XXX.XXX/24
static routers=XXX.XXX.XXX.XXX
static domain_name_servers=XXX.XXX.XXX.XXX
IPアドレス?という方は、調べてください(汗
ご自宅の環境により異なります
1-3.各種アップデート
アップデートといってもこれもコマンドで、ちょいちょいです(汗
LXTerminalから
>sudo apt-get update
>sudo apt-get upgrade -y
あと、これは環境によりですが、 RraspberryPi自体のファーム等を長年アップデートしていないという方!はそのアップデートも!
LXTerminalから
>sudo rpi-update
途中Yes/Noを聞かれたら基本的にYes
以上で初期設定は終了、ここからカメラとストリーミングするサーバーの構築となります。
2.カメラの確認
カメラの確認では下記をおこないます。
1.USB接続状態の確認
2.カメラの動作確認
以上です。これらは、今回の監視カメラに関わらず、USBカメラを接続した時に、動作確認としては共通として使用も可能ですね。
2-1.USB接続状態の確認
まずは、言わずもがなですが、USBポートにUSBカメラを接続です。
LXTerminalまたはSSHから
>lsusb
[WebかむC270 を接続時の実行結果]

実行するとUSB接続機器が表示されます。USBデバイス1-3はRaspberryPiの標準機器(というかLANはUSB経由なのをここで再認識したww)となり、それ以降が接続した機器となるはずです。これも環境や購入時期で少し異なる場合があるので、留意です。
2-2.カメラの動作確認
あとは、USBカメラが本当に動作するか?というところがきになる!
よくあるパターン?として、接続・認識してるけど、なぜか使えない!ってのもあるのでね!カメラ動作チェックするための、映像確認ツールをサクッと導入
LXTerminalまたはSSHから
>sudo apt-get update
>sudo apt-get upgrade -y
>sudo apt-get install build-essential libjpeg8-dev imagemagick libv4l-dev cmake -y
でGUI(端末直かVNC経由で)
メニューのサウンドとビデオ内に、guvcview があるので、起動して映像を確認!

映像が時々、綺麗に写っていないことがあるのですけど、ここでは無視してOKです。
ほぼリアルタイムの映像が表示されていればOKレベルです。
これでとりあえず、動作自体は確認できたので、あとは映像を送り出す仕組みであるストリーミングサーバーのセットアップです。
3.MJPGStreamer のインストール&動作確認
これがめんどくさい・・・ようで、そうでもない。
ここもコマンドでサクッと導入が可能、めんどくさいのは運用の方かもっすねw
ここでは、
1.MJPGStreamer のインストール
2.USBカメラの動作モード確認
3.MJPGStreamer の起動&確認
となります。
3-1.MJPGStreamer のインストール
今更触れる必要もないですけど、MJPGということは、モーションJPEGというわけで、
昨今の流れを考えると、映像クオリティ的には低め、ただ、カスタマイズ次第では、通信が少なめですませることができるので、いいといえばいい・・・
さて、サクッとインストールです。
LXTerminalまたはSSHから
>sudo apt-get update
>sudo apt-get upgrade -y
>sudo apt-get install build-essential libjpeg8-dev imagemagick libv4l-dev cmake -y
>d /tmp
>git clone https://github.com/jacksonliam/mjpg-streamer.git
>cd mjpg-streamer/mjpg-streamer-experimental
>make
>sudo make install
となる!ずらずらとコマンドが記載されていますけど(汗
各種内容の解説はながくなるので、割愛ですが、必要なツールとインストール、そしてmjpg-streamer本体をダウンロード後、実行できるファイルとして構成するといった感じです。
ちなみにコマンドは下記で起動可能
LXTerminalまたはSSHから
>/usr/local/bin/mjpg_streamer -i "input_uvc.so -r HD -d /dev/video0 -f 30 --no_dynctrl" -o "output_http.so -p 8080 -w /usr/local/share/mjpg-streamer/www"
今後のことも考えると次が必要です。
3-2.USBカメラの動作モード確認
さて、前段階のUSBカメラの接続ではあくまで接続を確認したのみでした。
ここではUSBカメラがどのようなモードで動作可能か?確認していきます。
映像デバイスの接続一覧
LXTerminalまたはSSHから
>v4l2-ctl --list-devices
[実行結果例]

この実行例の場合、UVCがUSBカメラとなります。
カメラが割り当てられているのは、
/dev/video1
/dev/video2
となります。先ほどコマンドでMJPGStreamer を起動した際に、カメラの指定をします。そこで使用することとなりますので、覚えるorメモっておきましょうw
つづいて、動作させることが可能なモード確認
LXTerminalまたはSSHから
>v4l2-ctl --list-formats-ext
[実行結果例]

この実行結果では、接続されがH264とMJPGで、それぞれ最大1080p[1920x1080/30fps]で動作することがわかります。
で、これも覚えるorメモっておく、次の起動時の指定値として使用していきます。
3-3.MJPGStreamer の起動&確認
最後です(やっとこw)
途中で紹介しまいたが、今一度実行する時のコマンドを紹介です。
>/usr/local/bin/mjpg_streamer -i "input_uvc.so -r HD -d /dev/video0 -f 30 --no_dynctrl" -o "output_http.so -p 8080 -w /usr/local/share/mjpg-streamer/www"
で、これだけではさっぱり?ということもあるので、それぞれの値について
-i "input_uvc.so
USBカメラを使用するということです。ちなみにraspberryPi純正のカメラは
-i "input_raspicam.so
となります。これ以外にもカメラの種類の指定はありますが、あまり使用するケースはないかと・・・・
つづいて
-r HD
解像度の指定です。この場合HDなので、720p[1280x720]となります。
以外と柔軟な記述が可能で、 1280x720と記載してもOK
つづいて
-d /dev/video0
これはUSBカメラの場所となります。前記で確認したとおもうので、その値です。
2つある場合は基本的に若い番号でOKです。
-f 30 はフレームレート、 --no_dynctr 個別にコントロールはしない
-o 行こうはカメラ映像の出力先設定となり、基本変更するとしたら、-p 8080の接続時のポートのみとなります。
最後に確認となります。
ブラウザはなんでもOKです。URLにraspberryPiのIPアドレスとそのあとに":8080"と先ほど指定したポートナンバーを追加して、実行
例
URL:192.168.1.2:8080
[実行例]

とすると、上記のようなWeb画面がひらかれるので、中断ぐらに映像が写っていればOK
あとは、映像のみのページに飛ぶだけとなります。
左がのメニューにある通りなのですが、静止画で見るときはSratic、ストリーミングで見る場合はStream、Jaca経由はJava、Javascriptならば・・・となります。
ちなみに映像のみのシンプルに見る場合は、先ほどのアドレスこうほうに”stream_simple.html"を追加することで、映像のみのページとなります。
例
URL:192.168.1.2:8080/stream_simple.html
[実行結果例]

以上となります。
これで構築完了です。あとはコマンドをバックグラウンドで実行させるなり、スケジュールに組み込むなり、毎回手動で。。。。など考えるとOKかと思います。
少しでも参考になれば幸いです。
ではでは
コメント
コメントを投稿