Instantly share code, notes, and snippets.

Embed
What would you like to do?
OpenMomo プロジェクト

OpenMomo プロジェクト

日時:2018-10-17
作:時雨堂
バージョン:18.10.13
URL:https://github.com/shiguredo/momo

このプロジェクトに興味がある人はこの資料やリポジトリに Star をつけてもらえると嬉しいです。

概要

OpenMomo プロジェクトとは 時雨堂 が開発/提供している WebRTC Gateway Momo を、 WebRTC Native Client Momo として再定義し、1 から作り直して OSS として公開し、その後も継続して開発していくプロジェクトです。

Momo は今から 2 年以上前に立ち上げた実験的製品でした。ただ残念ながら当時は Momo へリソースを割くことが難しく、うまく活用することができませんでした。

多くのお客様のおかげで WebRTC SFU Sora がビジネスとして軌道にのったこともあり、Sora を多くの人に触ってもらおうという OpenSora プロジェクト とともに、多くの人にブラウザ以外の WebRTC を体験してもらいたいという思いから、このプロジェクトを立ち上げました。

目的

ブラウザなしの WebRTC を多くの人に体験してほしいと考えています。またソースコードをオープンにすることで、 Momo をベースにした何かが生まれていけばと思います。

方針

  • libwebrtc を利用する
  • サポートはベストエフォートで行う
  • オフラインのイベントは行わない
  • 現時点では Raspberry Pi 以外の HWA 対応を行わない
  • 対応 OS 追加については要望が多い Linux ディストリビューションのみ受け付ける、それ以外は受け付けない
  • 機能追加要望は受け付けない
  • ハードウェア追加対応要望は受け付けない
  • バグ修正のみ受け付ける

GitHub

https://github.com/shiguredo/momo

ゴール

  • ソースコードを Apache License 2.0 で公開
  • 最新 libwebrtc への追従
  • ビルド済みバイナリ提供
    • Windows 向け x86_64 バイナリ
    • macOS 向け x86_64 バイナリ
    • Ubuntu 向け x86_64 バイナリ
    • Ubuntu 向け ARMv8 バイナリ
    • Raspbian 向け ARMv7 (32bit) バイナリ
      • Raspberry Pi 3 Model B/B+ 対応
    • Raspbian 向け ARMv6 バイナリ
      • Raspberry Pi Zero W/WH 対応
  • シグナリング部分をプラガブルに実装可能にする
    • デフォルトは WebRTC SFU Sora と P2P に対応
  • エンコーダー部分をプラガブルに実装可能にする
    • ハードウェアエンコーダーは Raspberry Pi 向けの H.264 のみ
  • マルチストリームを利用した双方向配信への対応
    • 要検討
  • データチャネルへの対応
    • 要検討
  • Momo を利用したアプリの開発ドキュメント

進捗

2018-10-17

2018-10-11

2018-10-02

  • --resolution で解像度を指定できるオプションを追加した
  • --framerate でフレームレートを指定できるオプションを追加した
  • --priority で解像度かフレームレートかを優先できるオプションを追加した
    • デフォルトはバランスを取るりますがこの機能はリリース段階で実験的機能です
  • --no-video でビデオを無効にするオプションを追加した
  • --no-audio でオーディオを無効にするオプションを追加した

2018-09-28

  • Ubuntu ARM64 対応機種に Rock64(PINE64) を追加した

2018-09-25

  • libwebrtc M70 に追従した

2018-09-20

  • Momo のコマンドライン引数をひとまず実装した

2018-09-17

  • libwebrtc M69 に追従した

2018-09-16

  • Ubuntu 16.04 向け ARMv8 (ARM64) ビルドに成功した
  • 生成されたバイナリの file コマンド結果を公開した

2018-09-12

  • Ubuntu 16.04 向け ARMv8 (ARM64) 対応をゴールに追加した

2018-09-06

  • Windows 10 x86_64 向けビルドに成功した

2018-09-02

  • Ubuntu 18.04 x86_64 向けビルドに対応した
  • Momo のコマンドライン引数を決めた

2018-09-01

  • macOS 10.13 向けビルドに対応した
  • Raspberry Pi 3 B/B+ (ARMv8) 向けを libwebrtc M69 に対応した

2018-08-31

  • Docker を利用して Raspberry Pi Zero 向けの H.264 ハードウェアエンコーダー対応ビルドが可能になった

2018-08-30

  • Raspberry Pi Zero 向けの H.264 ハードウェアエンコーダに対応した
  • 提供予定のバイナリの名前を決めた
    • momo-18.10.0_ubuntu_x86_64.tar.gz
      • Ubuntu 18.04
    • momo-18.10.0_ubuntu_armv8.tar.gz
      • Ubuntu 16.04
    • momo-18.10.0_windows_x86_64.zip
      • Windows 10
    • momo-18.10.0_macos_x86_64.zip
      • macOS 10.13
    • momo-18.10.0_raspbian_armv7.tar.gz
      • Raspbian June 2018
      • Raspberry Pi 3 B/B+
    • momo-18.10.0_raspbian_armv6.tar.gz
      • Raspbian June 2018
      • Raspberry Pi Zero H/HW

2018-08-28

  • Raspberry Pi 3 向けの H.264 ハードウェアエンコーダに対応した
  • Docker を利用して Raspberry Pi 3 向けの H.264 ハードウェアエンコーダー対応ビルドが可能になった

2018-08-25

  • Docker を利用して Raspberry Pi 3 向けのビルドが可能になった

2018-08-24

  • OpenMomo プロジェクトを公開した
  • OpenMomo に向けて Momo 2.0 のコードを整理
  • Raspberry Pi 3 向けのビルドの整理

WebRTC Native Client Momo

動作環境

  • Windows 10 最新版
    • x86_64
  • Ubuntu 18.04
    • x86_64
  • Ubuntu 16.04
    • armv8
  • macOS 最新版
    • x86_64
  • Raspbian 最新版
    • armv7
    • armv6

ロードマップ

18.10

リリース予定:2018 年 10 月末
  • Momo を Apache License 2.0 でオープンソース化
  • Ubuntu 18.04 x86_64 対応
  • Ubuntu 18.04 x86_64 向けのバイナリの提供
  • Ubuntu 16.04 ARMv8 向けのバイナリの提供
  • Ubuntu 16.04 ARMv8 対応
  • Rock64 対応
  • Raspberry Pi 3 B/B+ 向け ARMv7 バイナリの提供
  • Raspberry Pi 3 B/B+ 向け H.264 HWA 対応
  • Raspberry Pi Zero W/WH 対応
  • Raspberry Pi Zero W/WH 向け ARMv6 バイナリの提供
  • Raspberry Pi Zero W/WH 向け H.264 HWA 対応
  • 優先オプション
    • フレームレートか解像度のどちらを優先するか指定可能
  • libwebrtc M70 対応

TODO

  • macOS 10.13 x86_64 対応
  • macOS x86_64 向けのバイナリの提供
  • Windows x86_64 対応
  • Windows x86_64 向けのバイナリの提供
  • Raspberry 向け H.264 HWA を MMAL を利用したものに変更する
  • Unified Plan 対応
  • --mock-camera
    • ダミーカメラ
  • --mock-microphone
    • ダミーマイク
  • 双方向配信対応
  • DataChannel API の用意

メンテナンスフェーズ

これ以降は基本的に新規機能への対応などは行わずメンテナンスを中心に行います。

メンテナンスとは...

  • 利用しているライブラリのアップデート
  • libwebrtc のアップデート
  • OS のバージョンアップへの追従
  • WebRTC SFU Sora のバージョンアップへの追従

ライセンス

WebRTC Native Client Momo のソースコードライセンスは Apache License 2.0 として公開します。

サポート

公式サポートは行いません

WebRTC SFU Sora ライセンス契約している場合

有料にて Momo のサポートを提供が可能です。 Sora サポートまでご連絡ください。

Discord

ベストエフォート運用です

最新の状況などはこちらで共有しています。

https://discord.gg/gmEuZye

カスタマイズ

WebRTC Native Client Momo のカスタマイズについては、時雨堂では受け付けておりません。 ただし、Momo の開発やメンテナンスを手伝ってくれているお手伝いの方々を紹介することが可能です。

もし Momo のカスタマイズに興味がある方は一度 momo at shiguredo.jp までご連絡ください。

スポンサー募集

Momo のスポンサーになっても良いという企業の方は momo at shiguredo.jp までご連絡ください。

広告

WebRTC SFU Sora

WebRTC SFU Sora

商用の WebRTC SFU です。価格は同時 100 接続で年間利用料ライセンス 60 万円です。毎年かかります。製品のサポート料金込みです。200 接続だと年間 120 万円です。

複数人数での会議や、 数百人への配信、一対一の面談など様々な用途に利用可能です。

パッケージで提供しますので、自社で運用が可能です。 AWS だろうが GCP だろうが、オンプレだろうがなんでも好きな環境で動かすことができます。

サーバさえあれば起動までは 10 分です。デモ機能が内蔵しているので動かすまで 15 分です。

  • 大変多くのお客様に採用いただいております
  • とにかく 落ちないこと を目的に作っています
  • とにかく 繋がること を目的に作っています
  • とにかく 手間がかからないこと を目的に作っています
  • 最新ブラウザのアップデートに追従しています
  • シグナリングサーバ内蔵ですので別途立てる必要はありません
  • TURN サーバ内蔵ですので別途立てる必要ありません
  • 日本語によるサポート対応しています
  • フルスクラッチ自前実装なのですべて把握しています
  • 1:1 の双方向に対応しています
  • 1:300 の片方向に対応しています
  • 3:300 といった配信者が複数の片方向にも対応しています
  • スポットライトという機能を利用することで 50 人以上の会議に対応しています
  • 録画機能があります
  • Chrome / Firefox / Edge / Safari といった主要ブラウザ全てに対応しています
  • Apache 2.0 ライセンスで JavaScript と iOS と Android のクライアント SDK を公開しています
  • Apache 2.0 ライセンスで React Native 向け WebRTC ライブラリを公開しています
  • 既存システムとの連携を重視しており、Web フック機能を利用して簡単に連携が可能です
    • 認証や、クライアントの接続切断などもすべて HTTP での通知を既存のシステムに送ることができます

興味のある方はお気軽に sora at shiguredo.jp までお問い合わせください。

紹介や検討資料も公開しております。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment