LoginSignup
3

More than 3 years have passed since last update.

RaspberryPi4とMomoでWebRTCによる映像配信を行う

Posted at

この記事の概要

時雨堂が開発されているオープンソースの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カメラ&マイク

USBで接続できるカメラならなんでもよいと思いますが、社内にあった以下の会議用USBカメラを接続しました。
マイクもついてるタイプですが、マイクがない場合は別途必要となります。

ロジクール BCC950

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

視聴側で音が配信されていれば成功です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3