【ラズパイDIY講座】ラズパイゼロで作る監視カメラ④ 〜 軽量なWebRTCクライアント Momoで監視カメラを構築する
※ 当ページには【広告/PR】を含む場合があります。
2021/07/20

ということで、今回はUV4Lを
Momoをラズパイゼロに導入する
まずはラズパイゼロにMomoを導入していきます。
導入手順は
ここからはラズパイゼロのターミナルに入って、バイナリ版のインストール作業します。 バイナリ版は
$ mkdir momo && cd momo
$ wget https://github.com/shiguredo/momo/releases/download/[バージョンの選択]_raspberry-pi-os_armv6.tar.gz
$ tar -xzf [バージョン]_raspberry-pi-os_armv6.tar.gz
$ mv [バージョン]_raspberry-pi-os_armv6/* .
$ rm -rf [バージョン]_raspberry-pi-os_armv6*
$ ls
html LICENSE momo NOTICE
これでバイナリのmomoが利用可能になりました。
次に必要なライブラリをインストールします。
$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install libnspr4 libnss3 libsdl2-dev
これでMomoのバイナリ版インストールが完了です。
Momoの動作確認
次にMomoの動作確認を行います。
カメラモジュールを使って画像を取り込む場合には、raspi-configからカメラ有効にする必要があります。
$ sudo raspi-config
#👇以下の設定に進んで有効にする
3 Interface Options Configure connections to peripherals
> P1 Camera Enable/disable connection to the Raspberry Pi Camera
> Would you like the camera interface to be enabled?
> <Yes>
再起動後、カメラモジュールが有効になっています。
Raspberry Pi OSでカメラモジュールを利用する際には、カメラドライバに以下の設定を加えます。
$ sudo modprobe bcm2835-v4l2 max_video_width=2592 max_video_height=1944
次にMomoを動かしてみましょう。
+ テストモード:
Momo自体に内蔵されているシグナリング機能を利用する。
+ Ayameモード:
別プログラム・WebRTCシグナリングサーバAyameを利用して、
Momoとクライアント間で、1:1送受信する。
+ Sora モード:
別プログラム・WebRTC SFU Soraを使って、
Momoとクライアント間で、1:1+送受信する。
ここではテストモードを利用します。 先程Momoを展開したフォルダに入り、以下を実行してみます。
$ ./momo --log-level 0 --no-audio-device test
[000:000][477] (v4l2_video_capturer.cpp:76): GetDeviceName(0): device_name=mmal service 16.1, unique_name=platform:bcm2835-v4l2-0
[000:026][477] (v4l2_video_capturer.cpp:76): GetDeviceName(1): device_name=bcm2835-isp, unique_name=platform:bcm2835-isp
[000:034][477] (v4l2_video_capturer.cpp:76): GetDeviceName(2): device_name=bcm2835-isp, unique_name=platform:bcm2835-isp
#...中略
[001:140][480] (agc_manager_direct.cc:68): [agc] GetMinMicLevel
[001:141][480] (agc_manager_direct.cc:72): [agc] Using default min mic level: 12
[001:154][481] (thread.cc:688): Message to Thread 0x0x27405d8 took 202ms to dispatch. Posted from: PostTask@../../../_source/raspberry-pi-os_armv6/webrtc/src/rtc_base/thread.cc:1059
[001:156][480] (thread.cc:688): Message to Thread 0x0x2741590 took 166ms to dispatch. Posted from: PostTask@../../../_source/raspberry-pi-os_armv6/webrtc/src/rtc_base/thread.cc:1059
#...
これでMonoのテストモードが起動状態になりました。
momoのエイリアスを付ける
蛇足ですが、毎回Momoをインストールしたフォルダ越しに
./momo
monoの実行ファイルの置き場所は各自考えていただくとして、ここではさきほど展開したままの場所を使います。
$ nano ~/.bashrc
で.bashrcの末尾等に以下を追記します。
#...略
#Momo alias
alias momo='<momoの実行ファイルを置いた場所>/momo'
編集したら保存して、設定ファイルを再反映しておきます。
$ source ~/.bashrc
これでmomoがコマンドで何処からでも呼び出せます。
$ momo --version
WebRTC Native Client Momo 2021.3 (1334a266)
WebRTC: Shiguredo-Build M90.4430@{#3} (90.4430.3.1 dee77cf2)
Environment: [armv6l] Raspbian GNU/Linux 10 (buster)
USE_MMAL_ENCODER=1
USE_JETSON_ENCODER=0
USE_NVCODEC_ENCODER=0
USE_SDL2=0
Monoのテストモードで確認
シグナリングサーバーを介さずともMonoが内部で立てているWebサーバーへアクセスすることで動作しているかが確認することもできます。
ここではラズパイゼロ側の固定IPが
192.168.0.123
http://192.168.0.123:8080/html/test.html
まとめ
今回はラズパイゼロ上でmomoの動作確認を行って見ました。
テストモードでデフォルトの設定でも、体感で1秒以下の遅延で動作していることが確認できました。
またMomoの姉妹製品である
MomoのWebRTC通信方式はまた別の記事で、シグナリングの方法がどのようになっているのかを解析してみたいと思います。