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




どうもSFです。
前回のこの話は前振りだけで終わるという・・・・

さて、今回はサクサクと構築手順です。
その前に使用する物の紹介です。

RaspberryPi 3Bhttps://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かと思います。

少しでも参考になれば幸いです。
ではでは






マウスコンピューター/G-Tune HP Directplus -HP公式オンラインストア- 468x60_vb Microsoft Public Affiliate Program (JP)(マイクロソフトアフィリエイトプログラム)

コメント

このブログの人気の投稿

AMD Radeon ReLive 音が録音できないトラブル

Handbrake CLI で AMDとNVIDIA のGPUエンコードを使用するも・・・・No.01

裏2:Amazon Fire TV Stick その使い道は kodi で どうでぃ!