WebRTC Native Client Momoの低遅延配信を Raspi 4 でためす

![SS 192.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/a41cd967-f549-8677-1efa-2e99bf69518d.png) 　ばくそくだったよ。

##やること
ロボットを遠隔操作する場合などにリモートカメラを利用したくなります。
手軽に低遅延の画像配信を実現できるWebRTC Native Client Momoというソフトがラズパイで使えるということなのでデモを試してみました。オープンソースとのことです。すごい。爆速。

##公式サイト

- [WebRTC Native Client Momo公式サイト](https://momo.shiguredo.jp/
)
- [githubの公式ドキュメント](https://github.com/shiguredo/momo/blob/develop/doc/SETUP_RASPBERRY_PI.md)

必要なことは公式サイトや公式ドキュメントに書いてあります。
公式のドキュメントを見れば大丈夫のハズ・・・ですが永遠の初心者である自分はつまづきました。ので導入メモを残しておきます。

##環境
- Raspberry Pi 4 (OS : Raspbian buster)
- Raspberry Pi カメラモジュール V2 導入済み
- ラズパイとPCが同じwifiルーターにつながっている

##DEMOを達成するまでの導入メモ

まず、ラズパイのターミナルで下記を１行ずつ実行します。
ルートディレクトリでファイル操作の作業をしますので自己責任にてお願いいたします。


###カメラの確認
カメラモジュールの動作確認は[こちらが参考](https://qiita.com/morichu78/items/e95183b01be909936209)になります。
別途USBカメラを使う場合には、[公式ドキュメント](https://github.com/shiguredo/momo/blob/develop/doc/SETUP_RASPBERRY_PI.md)にしたがって下記を読み替えてください。
###ラズパイ側の作業

```python:raspi
cd / #ルートディレクトリに移動。ここ大事。
sudo wget https://github.com/shiguredo/momo/releases/download/2021.2.3/momo-2021.2.3_raspberry-pi-os_armv7.tar.gz
sudo tar -zxvf momo-2021.2.3_raspberry-pi-os_armv7.tar.gz
sudo mv momo-2021.2.3_raspberry-pi-os_armv7/* ./
sudo rm -r momo-2021.2.3_raspberry-pi-os_armv7
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libnspr4 libnss3
sudo modprobe bcm2835-v4l2 max_video_width=2592 max_video_height=1944
sudo ./momo --force-i420 --no-audio-device test #実行
```

2行目でラズパイ4用(2と3もOK)のファイルを取得しています。（URLは2021年4月27日現在のものです。）
最新のバージョンやラズパイZero,1の場合などは下記からDLするかURLを置き換えてください。
[https://github.com/shiguredo/momo/releases](https://github.com/shiguredo/momo/releases)

上記の作業をすべてルートディレクトリで行うのがポイントです。

最後の行を実行すると、配信が始まります。


###ラズパイのIPアドレスを調べる

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/a84365fc-b9c5-2a9a-2265-6873c27df204.png" width= 200>

右上の電波マークの上にマウスオーバーするとwlan0:Configuredのところにラズパイ自身のIPアドレスが出ます。
もしくはターミナルでifconfigを実行し、wran0:のinetの項目を調べてもOKです。
IPアドレスを控えます。

###PC側の作業
PCでブラウザを開き、アドレスバーに

`http://＜今調べたラズパイのIPアドレス＞:8080/home/html/test.html`

と入力します。
http:// なので、http<font color="red">s</font>://<font color="red">にならないように注意</font>してください。（ブラウザによっては勝手にsが入力されるかもしれません。）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/110c9589-ffc2-4644-59ae-ac5353f4a4b8.png" width = 400>
ブラウザにこのように表示されたらサーバーへの接続は成功です。

###開通！

最後にブラウザの「Connect」ボタンを押します。カメラの画像が現れたら大成功です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/91913eac-7c13-cb88-afd8-39646b244d56.png" width = 400>

おつかれさまでした！
このソフトの凄さは古くから遠隔カメラ操作で苦労してきた人ならきっとわかるハズ。
インターネット経由はもちろん、双方向通信などもできるようです。すごい。

動画も置いておきます。ループしたPC画面が映り込んでいるのでスピード感が遅い感じにみえるかもしれませんが、マリオカートライブぐらいの走行スピードであればストレスなく楽しめそうな気がします。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">WebRTC Native Client Momoをテスト。なかなかの低遅延。ラズパイ４ ＋ picameraでwifi経由。これは遊べるスピードかも＾＾ <a href="https://t.co/yKfoiXhCox">pic.twitter.com/yKfoiXhCox</a></p>&mdash; 二名川 (@Ninagawa123) <a href="https://twitter.com/Ninagawa123/status/1386983745555771392?ref_src=twsrc%5Etfw">April 27, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

## 参考

- [株式会社時雨堂 WebRTC Native Client Momo公式サイト](https://momo.shiguredo.jp/)
- [公式ドキュメント](https://github.com/shiguredo/momo/blob/develop/doc/SETUP_RASPBERRY_PI.md)
- [WebRTC Native Client Momo で FPVラジコンを堪能](https://homemadegarbage.com/fpv-pi03)
- [RaspberryPi4とMomoでWebRTCによる映像配信を行う]
(https://qiita.com/sasaki_nuno/items/ffe46f0dbb803aad631e)