logo

momoMomo とは

Momo は Raspberry Pi や NVIDIA Jetson などのハードウェアエンコーダーを利用し、4K や 1080p といった高画質な映像でも遅延 1 秒未満で配信できる WebRTC ネイティブクライアントです。
株式会社時雨堂が開発し、Apache License 2.0 のオープンソースソフトウェアとして GitHub 上に公開しています。

momoおしらせ

2024.09.18
WebRTC Native Client Momo 2024.1.0 をリリースしました
  • H.265 ハードウェアアクセラレーターに対応しました
  • Intel VPL を利用したハードウェアアクセラレーターに対応しました
  • Ubuntu 24.04 x86_64 に対応しました
  • libwebrtc M128 に対応しました
詳細はリリースノートをご確認ください
2023.09.28
WebRTC Native Client Momo 2023.1.0 をリリースしました
  • Raspberry Pi OS 64 bit に対応しました
  • ラズパイ専用カメラ(libcamera) に対応しました
  • Ubuntu 22.04 x86_64 に対応しました
  • libwebrtc M117 に対応しました
詳細はリリースノートをご確認ください
2022.10.21
WebRTC Native Client Momo 2022.4.1 をリリースしました
  • libwebrtc M107 に対応しました
詳細はリリースノートをご確認ください
2022.08.09
WebRTC Native Client Momo 2022.3.0 をリリースしました
  • 認証付き Proxy に対応しました
  • libwebrtc M104 に対応しました
詳細はリリースノートをご確認ください
2022.04.25
WebRTC Native Client Momo 2022.2.0 をリリースしました
  • Intel Media SDK に対応
  • NVIDIA VIDEO CODEC SDK を利用したハードウェアデコーダーに対応
  • クライアント証明書に対応しました
  • libwebrtc M102 に対応しました
詳細はリリースノートをご確認ください
2022.03.09
WebRTC Native Client Momo 2022.1.0 をリリースしました
  • Raspberry Pi OS bullseye に対応
  • libwebrtc M99 に対応しました
詳細はリリースノートをご確認ください

momo特長

オールインワン
Momo は、シグナリング機能、エンコーダー/デコーダー機能、デバイス認識機能を搭載しており、Momo だけでカメラからの映像を読み込み、変換し、配信することができます。
簡単なビルド
ビルドのしやすさにはこだわり、効率とシンプルさを徹底的に追求したビルド環境を用意しています。コマンドを1つ打つだけでバイナリが生成できます。
ハードウェアアクセラレーター対応
Momo では VP9、AV1、H.264、H265 ハードウェアエンコーダーを利用することで、CPU リソースをほとんど使わずに高画質の配信ができます。プラットフォームとして Raspberry PiNVIDIA JetsonNVIDIA Video Codec SDKApple Video ToolboxIntel VPL に対応しています。Raspberry Pi や NVIDIA Jetson はハードウェアデコーダーに対応しています。

  • Intel N150/N100 の例

Momo と Intel N150/N100 で H.265 ハードウェアエンコーダーを使用して配信する構成図

  • NVIDIA Jetson Orin の例

Momo と NVIDIA Jetson Orin で AV1 ハードウェアエンコーダーを使用して配信する構成図
  • Raspberry Pi 4 の例
Momo と Raspberry Pi 4 で H.264 ハードウェアエンコーダーを使用して配信する構成図

※ Raspberry Pi 5 はハードウェアエンコーダーを搭載していないので注意してください

4 K 対応
Momo ではハードウェアアクセラレーターを利用することで、4K / 30FPS での高画質な配信が可能です。
3 種類の配信モード
Momo は、「テストモード」「Ayame モード」「Sora モード」の 3 種類を用意しています。
それぞれの詳細は こちら で紹介しています。
  • テストモード
    本来は Momo 自体の開発者向けに用意されているモードです。
    このテストモードでは Momo 自体に内蔵しているシグナリングサーバーを利用するため、 まず Momo の動作を確認したいという場合にも利用できます。
  • Ayame モード
    時雨堂が提供する「WebRTC シグナリングサーバー Ayame」と組み合わせて使うモードです。
    Momo と WebRTC クライアント間で、映像・音声・データを 1 : 1 で送受信することができます。
  • Sora モード
    時雨堂が提供する「WebRTC SFU Sora」と組み合わせて使うモードです。
    1 : 多および多 : 多 の配信や、録画・録音が必要な商用サービスでの利用を想定しています。
音声や映像の受信・再生
Momo は単体で音声や映像を受信・再生することが可能です。
SDL (Simple DirectMedia Layer) を利用することで、音声や映像の受信・再生ができます。また、ハードウェアアクセラレーターのデコード機能を利用することで、CPU の負荷を抑えて受信・再生することができます。
多くのプラットフォームで動作
Momo は Raspberry Pi や NVIDIA Jetson だけでなく、macOS や Windows でも動作します
libwebrtc に追従
Momo は最新の libwebrtc に追従しています
認証付き HTTP Proxy 対応
Momo では認証付き HTTP Proxy を越えられる仕組みを提供しています。
スクリーンキャプチャ対応
Windows、Linux、macOS 版でスクリーンキャプチャに対応しています。
データチャネルとシリアル通信
Momo は Ayame と組み合わせて利用することで、データチャネル経由でのシリアル通信が可能です。
サイマルキャスト配信
Momo は複数の画質を同時に配信できるサイマルキャストに対応しています。Sora と組み合わせて利用することで、受信側が自身のネットワーク環境に合わせた画質を選択できるようになります。
時雨堂によるメンテナンス
Momo は、商用サービス向けの WebRTC サーバーを開発している時雨堂が常にメンテナンスをしています。WebRTC に関する豊富な知識とノウハウを活かし、適切なアップデートや機能追加を行っています。

momoまずは Momo を動かしてみる (テストモード)

Momo 自体がシグナリング機能を内蔵しているため、まず手始めに Momo の動作確認を行いたい場合に利用できます。
Momo のテストモードを利用した動作確認の構成図。Momo はシグナリング機能を内蔵しているため、手軽に接続確認ができる。

momo1:1 の配信をする (Ayame モード)

時雨堂が提供する「WebRTC シグナリングサーバー Ayame」と組み合わせて利用すれば、Momo と WebRTC クライアント間で、映像・音声・データを 1 : 1 で送受信することができます。
Momo の Ayame モードを利用した 1 対 1 での WebRTC 通信の構成図。時雨堂が提供する Ayame と組み合わせて映像・音声・データを送受信できる。

1 : 1 で映像や音声の送受信を行う場合

Momo は SDL (Simple DirectMedia Layer) を利用することで、双方向のやりとりも実現できます。
ハードウェア側では WebRTC で送受信する H.264 の映像をエンコードまたはデコードすることができます。
また、カメラデバイスから送られてくる MJPEG 形式の圧縮された映像は、Raspberry Pi のハードウェアデコーダーを利用することで、CPU の負荷を抑えて受信することができます。

Momo の Ayame モードで SDL (Simple DirectMedia Layer) を利用して双方向の配信を行なう構成図

1 : 1 でデータの送受信を行う場合

Ayame モードでは、データチャネル経由でシリアル通信が可能です。

Momo の Ayame モードを利用した、データチャネルで 1:1 のデータの送受信を行なう構成図

momo1:多 の配信をする (Sora モード)

時雨堂が提供する「WebRTC SFU Sora」と組み合わせて利用すれば、1 : 多 の配信をしたり、配信した映像や音声を録画・録音したりすることも可能です。おもに商用サービスでの利用を想定しています。
Momo の Sora モードを利用した 1 対 多の映像・音声配信の構成図。時雨堂が提供する WebRTC SFU Sora と連携し、商用サービスで利用することを想定。

多人数で送受信を行う場合

Momo は SDL (Simple DirectMedia Layer) を利用することで、双方向のやりとりも実現できます。Sora と組み合わせれば、以下のような多人数どうしでの送受信 (送信のみも可) も実現できます。

Momo の Sora モードを利用した、多人数が同時に映像や音声を送受信する構成図。SDL (Simple DirectMedia Layer) を利用して双方向の配信を行なうことができる。

momo利用例

個人でご利用いただいている例

momo動作環境

  • Raspberry Pi OS (64bit) ARMv8

    • Raspberry Pi 4
    • Raspberry Pi 3
    • Raspberry Pi 2 Model B v1.2
    • Raspberry Pi Zero 2 W
  • Ubuntu 24.04 x86_64

  • Ubuntu 22.04 x86_64

  • Ubuntu 22.04 ARMv8 Jetson

  • macOS 14 arm64 以降

  • Windows 11 x86_64

momoダウンロード

Github のリリースから、すぐに使えるバイナリがダウンロードできます。

momo有料サポート

現在は、WebRTC SFU Sora をご購入いただいているお客様限定で、Momo と Sora を組み合わせてご利用いただく場合の技術サポートのみ、有料でご提供しています。

有料サポートをご希望のお客様は、Sora のサポートまでメールでご連絡ください。

momoコミュニティ

Momo のコミュニティはこちら

https://discord.gg/shiguredo