この記事の概要
時雨堂が開発されているオープンソースのMomoというソフトウェアで、RaspberryPiからWebRTCによる映像配信をしてみました
https://momo.shiguredo.jp/
一般的なインターネット環境、カメラ・マイクがあれば、簡単にRaspberryPiでスタンドアローンなWebRTCを試すことができます。
セットアップ
Raspberry Pi セットアップ
RPiが始めてだったので、とりあえずGUIがほしかったため、RaspbianOSというLinuxベースのOSをインストールしてみました。
WebRTC(Momo)に必須ではありませんが、一応紹介しておきます。
Raspberry Pi 4にRaspbianの初期設定2020年版
用意したデバイス
USBキーボード、USBマウス
セットアップに必要となるため、ロジクールの格安USB(Bluetooh)セットを購入しました。
基本的にUSBをつなぐだけで使えます。
USBカメラ&マイク
USBで接続できるカメラならなんでもよいと思いますが、社内にあった以下の会議用USBカメラを接続しました。
マイクもついてるタイプですが、マイクがない場合は別途必要となります。
OSの基本設定
RaspbianOSがインストールされている前提で説明します。
まずはカメラが有効化されていることを確認します。
RaspbianOS / 設定 / Raspberry Pi の設定 / インターフェイス
カメラ:有効
設定を変更し、ターミナルを開いてsupported=1になっていれば有効化されていることが確認できます。
$ vcgencmd get_camera
supported=1 detected=0
USB接続デバイスの確認
接続されているUSB接続デバイスをの種類を確認します。
$ lsusb
接続されているデバイスを確認する。
$ v4l2-ctl --list-devices
Momoセットアップ
参考)Momoセットアップ公式ページ
https://github.com/shiguredo/momo/blob/develop/doc/SETUP_RASPBERRY_PI.md
momoのリリースページから対象のライブラリをダウンロードします。
https://github.com/shiguredo/momo/releases
※ Raspberry Pi 4 は momo-2020.9_raspberry-pi-os_armv7.tar.gz
が対象となります。
任意のディレクトリに配置し解凍します。
$ tar xfz momo-2020.9_raspberry-pi-os_armv7.tar.gz
解凍後の構成は以下の通り。
$ tree
.
├── html
│ ├── test.html
│ └── webrtc.js
├── LICENSE
├── momo
└── NOTICE
RaspberryPiにパッケージのインストールします。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install libnspr4 libnss3
映像配信テスト
ローカル配信
参考)公式ページ:テストモードを利用して Momo を動かしてみる
https://github.com/shiguredo/momo/blob/develop/doc/USE_TEST.md
解凍後のディレクトリにmomoの実行バイナリがあるのでローカルでテストをします。
以下を実行すると、ローカルネットワークで配信します。
(音の配信はありません。後述する方法でマイクの設定が必要です)
$ ./momo --no-audio-device test
自分のIPアドレスを調べます。
$ ifconfig
仮にIPが「192.168.1.28」だった場合、同じローカルネットワーク環境にてブラウザでhttp://192.168.1.28:8080/html/test.html
とアクセスし、表示されれば成功です。
AYAME配信
公式ドキュメント
https://github.com/shiguredo/momo/blob/develop/doc/USE_AYAME.md
ローカルネットワークではなく、インターネット環境で配信テストをしてみたい場合は、時雨堂が提供するAYAMEというサーバーがあるのでそちらで試すこともできます。
マイク接続
RaspberryPiにはデフォルトでマイクがなく、USBマイクを接続し利用するには、初期設定する必要があります。
USBマイクをRaspberryPiに接続し、以下コマンドでマイクのUSB接続がされているか確認してください。
$ lsusb
マイクの接続優先度を確認します。
$ cat /proc/asound/modules
0 snd_bcm2835
1 snd_bcm2835
2 snd_usb_audio
USBマイクの優先度が低いため、自動的に接続されません。
nano(vimのようなエディタ)を使って設定ファイルを新規作成します。
$ sudo nano /etc/modprobe.d/alsa-base.conf
以下を入力して保存します。
options snd slots=snd_audio,snd_bcm2835
options snd_usb_audio index=0
options snd_bcm2835 index=1
設定ができたら、端末を再起動します。
$ reboot
再起動後、以下のように優先度が変われば成功です。
$ cat /proc/asound/modules
0 snd_usb_audio
1 snd_bcm2835
2 snd_bcm2835
audioオフのオプションを削除してMomoを起動します。
$ ./momo test
視聴側で音が配信されていれば成功です。