Skip to content
shiguredoPublic

Repository files navigation

WebRTC Native Client Momo

libwebrtc GitHub tag (latest SemVer) License Actions Status

About Shiguredo's open source software

We will not respond to PRs or issues that have not been discussed on Discord. Also, Discord is only available in Japanese.

Please read https://github.com/shiguredo/oss/blob/master/README.en.md before use.

時雨堂のオープンソースソフトウェアについて

利用前に https://github.com/shiguredo/oss をお読みください。

WebRTC Native Client Momo について

WebRTC Native Client Momo は libwebrtc を利用しブラウザなしでさまざまな環境で動作する WebRTC ネイティブクライアントです。

https://momo.shiguredo.jp/

ハードウェアアクセラレーターへの対応

  • Raspberry Pi の GPU に積まれているハードウェアアクセラレーター機能を V4L2 M2M 経由で利用できます
    • ハードウェアエンコーダー: H.264
    • ハードウェアデコーダー: H.264
    • Raspberry Pi 5 では H.264 ハードウェアアクセラレーターが搭載されていないため利用できません
  • Apple macOS に搭載されているハードウェアアクセラレーター機能を Apple VideoToolbox 経由で利用できます
    • ハードウェアエンコーダー: H.264 / H.265
    • ハードウェアデコーダー: H.264 / H.265
  • NVIDIA ビデオカードに搭載されているハードウェアアクセラレーター機能を NVIDIA Video Codec 経由で利用できます
    • ハードウェアエンコーダー: VP9 / AV1 / H.264 / H.265
    • ハードウェアデコーダー: VP9 / AV1 / H.264 / H.265
  • Intel グラフィックスチップに搭載されているハードウェアアクセラレーター機能を Intel VPL 経由で Windows x86_64 と Ubuntu x86_64 にてハードウェアアクセラレーター機能を利用できます
    • ハードウェアエンコーダー: VP9 / AV1 / H.264 / H.265
    • ハードウェアデコーダー: VP9 / AV1 / H.264 / H.265
  • NVIDIA Jetson に搭載されているハードウェアアクセラレーター機能を NVIDIA JetPack SDK 経由で利用できます
    • ハードウェアエンコーダー: VP9 / AV1 / H.264 / H.265
    • ハードウェアデコーダー: VP9 / AV1 / H.264 / H.265

P2P モード

Momo は Momo 自体がシグナリングサーバーを持っているため、完全な P2P モードで利用できます。

ブラウザから Momo にアクセスするだけで利用できます。

Ayame モード

WebRTC Signaling Server Ayame

Momo は WebRTC Signaling Server Ayame に対応したモードがあり、 Momo どうしでも利用できます。

Sora モード

WebRTC SFU Sora

Momo は時雨堂が開発、販売している WebRTC SFU Sora に対応したモードがあります。

Raspberry Pi の libcamera に対応

raspberrypi/libcamera に対応しています。

詳細は LIBCAMERA.md を確認してください。

120 fps 対応

Momo はカメラの無圧縮映像に対応しているため、ハードウェアエンコーダーを利用することで 120 fps で配信できます。

4K の配信 / 視聴

Momo はハードウェアアクセラレーターを利用することで WebRTC で 4K の配信 / 視聴ができます。

サイマルキャストへの対応

Momo は Sora モード利用時にサイマルキャスト (複数画質の同時配信) に対応しています。

データチャネル経由でのシリアルの読み書き

Momo はデータチャネルを利用しシリアルに直接読み書きできます。信頼性より低遅延を優先したい場合の利用を想定しています。

SDL を利用した音声や映像の受信

Momo を GUI 環境で利用した場合、Simple DirectMedia Layer を利用して音声や映像を受信できます。

H.265 (HEVC) への対応

ハードウェアアクセラレーターを利用した H.265 の送受信に対応済みです。

AV1 への対応

AV1 の送受信に対応済みです。

YUY2 や NV12 への対応

Momo は YUY2 や NV12 といった無圧縮のフォーマットに対応しています。

クライアント証明書への対応

Momo は Sora モード利用時にクライアント証明書に対応しています。

OpenH264 の利用

Momo は OpenH264 を利用して H.264 のソフトウェアのエンコード / デコードができます。

デバイス一覧の取得

Momo は Linux (Ubuntu / Raspberry Pi OS) と macOS で音声入力、音声出力、映像入力デバイスの一覧を取得できます。

映像入力デバイスの指定

Momo は Windows、Linux (Ubuntu / Raspberry Pi OS)、macOS で映像入力デバイスを指定できます。

Linux については doc/LINUX_VIDEO_DEVICE.md を確認してください。

音声入出力デバイスの指定

Momo は Linux (Ubuntu / Raspberry Pi OS) と macOS で音声入力、音声出力デバイスを指定できます。

Linux については doc/LINUX_AUDIO_DEVICE.md を確認してください。

動画

WebRTC Native Client Momo と Jetson Nano で 4K@30 配信

OpenMomo プロジェクトについて

OpenMomo は WebRTC Native Client Momo をオープンソースとして公開し継続的に開発していくプロジェクトです。 ブラウザやスマートフォン以外でも、WebRTC をさまざまな用途で使ってもらえればと考えています。

詳細については下記を確認してください。

OpenMomo プロジェクト

また Momo についてのつぶやきは以下にまとめてあります。

https://gist.github.com/voluntas/51c67d0d8ce7af9f24655cee4d7dd253#twitter

既知の問題について

既知の問題に対する解決方針

バイナリ提供について

以下からダウンロードできます。

https://github.com/shiguredo/momo/releases

動作環境

  • Windows 11 x86_64
  • macOS 26 arm64
  • macOS 15 arm64
  • macOS 14 arm64
  • Ubuntu 24.04 x86_64
  • Ubuntu 22.04 x86_64
  • Ubuntu 22.04 ARMv8 (JetPack 6)
  • Raspberry Pi OS Bookworm (64bit)
    • Raspberry Pi 5
    • Raspberry Pi 4
    • Raspberry Pi 3
    • Raspberry Pi 2 Model B v1.2
    • Raspberry Pi Zero 2 W

使ってみる

Momo を使ってみたい人は USE.md をお読みください。

ビルドする

  • Momo をビルドしたい、またはパッケージ作成したい人は BUILD.md をお読みください

FAQ

FAQ.md をお読みください。

ライセンス

Apache License 2.0

Copyright 2015 tnoho (Original Author)
Copyright 2018 Shiguredo Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

OpenH264

https://www.openh264.org/BINARY_LICENSE.txt

"OpenH264 Video Codec provided by Cisco Systems, Inc."

優先実装

優先実装とは Sora のライセンスを契約しているお客様限定で Momo の実装予定機能を有償にて前倒しで実装することです。

これまでに優先実装した機能

優先実装が可能な機能一覧

こちらに掲載していない機能でも対応できる場合がありますのでまずはお問い合わせください

  • Windows 11 x86_64 での --list-devices オプション対応
  • Windows 11 x86_64 での --audio-input-device オプション対応
  • Windows 11 x86_64 での --audio-output-device オプション対応
  • Windows 11 arm64
  • Ubuntu 20.04 arm64 (JetPack 5)

Momo についての電子書籍

Momo の原作者である @tnoho が書いた Momo のノウハウがたくさん詰まった本が販売されています。

WebRTC をブラウザ外で使ってブラウザでできることを増やしてみませんか?(電子版) - でんでんらぼ - BOOTH

サポートについて

Discord

  • サポートしません
  • アドバイスします
  • フィードバック歓迎します

最新の状況などは Discord で共有しています。質問や相談も Discord でのみ受け付けています。

https://discord.gg/shiguredo

バグ報告

Discord へお願いします。

有料でのテクニカルサポートについて

WebRTC Native Client Momo に対する有料でのテクニカルサポート契約については WebRTC SFU Sora ライセンス契約をしているお客様が前提です。

  • Momo のテクニカルサポート
  • OSS 公開前提での Momo への機能追加

NVIDIA Video Codec

https://docs.nvidia.com/video-technologies/video-codec-sdk/13.0/index.html

“This software contains source code provided by NVIDIA Corporation.”

H.264 のライセンス費用について

H.264 ハードウェアエンコーダー のみ を利用している Momo 単体の配布においてはライセンス費用は不要ですが、 ハードウェアとセットで配布する場合はライセンス費用を支払う必要があります。

ただし、 Raspberry Pi においては H.264 のライセンスがハードウェア費用に含まれているため、 配布時にライセンス費用を支払う必要はありません。

詳細については Via LA Licensing まで問い合わせることをおすすめします。

Momo の H.264 対応は Via LA Licensing (旧 MPEG-LA) に連絡を取り、ロイヤリティの対象にならないことを確認しています。

時雨堂がエンドユーザーの PC / デバイスに既に存在する AVC / H.264 エンコーダー / デコーダーに依存する製品を提供する場合は、 ソフトウェア製品は AVC ライセンスの対象外となり、ロイヤリティの対象にもなりません。

H.265 のライセンス費用について

H.265 ハードウェアエンコーダー のみ を利用している Momo 単体の配布においてはライセンス費用は不要ですが、 ハードウェアとセットで配布する場合はライセンス費用を支払う必要があります。

Momo の H.265 対応は以下の二つの団体に連絡を取り、H.265 ハードウェアアクセラレーターのみを利用する場合は、OSS 公開とビルド済みバイナリの配布がライセンス不要であることを確認しています。

Releases

Used by

Contributors

Languages