Instantly share code, notes, and snippets.

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

OpenMomo プロジェクト

日時:2018-09-20
作:時雨堂
バージョン:18.09.13

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

概要

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

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

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

目的

WebRTC Native Client を多くの人に体験してほしいと考えています。ブラウザや iOS/Android だけでなく、WebRTC 専用クライアントを実感してください。

またソースコードをオープンにすることで、 Momo をベースにした何かが生まれていくことを期待しています。

方針

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

ゴール

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

進捗

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

コマンド

$ momo --version
WebRTC Native Client Momo version 18.10.0
$ momo --help

Usage:  momo [OPTIONS] MODE

Options:
  --no-video
  --no-audio
  --video-codec string
  --audio-codec string
  --video-bitrate int
  --audio-bitrate int
  --deamon
  --log-level string   Set the logging level
  --version            Print version information and quit

Modes:
  p2p   P2P
  sora  WebRTC SFU Sora

Run 'momo MODE --help' for more information on a mode.
$ momo p2p --help

Usage:  momo p2p [OPTIONS]

P2P

Options:
  --port int
$ momo --daemon --no-audio --video-codec H264 --video-bitrate 1500 \
       p2p --port 8080
$ momo sora --help

Usage:  momo sora [OPTIONS] SIGNALING-URL CHANNEL-ID

WebRTC SFU Sora

Options:
  --auto
$ momo --no-audio --video-codec VP8 --video-bitrate 500 \
       sora --auto wss://example.com/signaing open-momo

バイナリ

ARMv6 と ARMv7 が同じように見えますが、 ARMv6 はいろいろパッチを当てて ARMv6 で動作するようにしています。

Raspbian ARMv6 向け:

momo-armv6-m69: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, not stripped

Raspbian ARMv7 向け:

momo-armv7-m69: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, not stripped

Ubuntu ARMv8 向け:

momo-armv8-m69: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, not stripped

ロードマップ

予定は未定

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 対応
  • 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 対応

18.10

リリース予定:2018 年内
  • macOS 10.13 x86_64 対応
  • macOS x86_64 向けのバイナリの提供
  • Windows x86_64 対応
  • Windows x86_64 向けのバイナリの提供
  • Raspberry 向け H.264 HWA を MMAL を利用したものに変更する
  • Unified Plan 対応
  • フレームレート優先オプション
  • 解像度優先オプション

未定

リリース予定:未定
  • 双方向配信対応
  • DataChannel API の用意

メンテナンスフェーズ

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

メンテナンスとは...

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

ライセンス

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

サポート

Momo 単体でのサポートに対してはベストエフォートでのみ行います。

WebRTC SFU Sora を購入して、Sora と Momo の連携をしている場合

有料にてサポートを提供します。 Sora サポートまでご連絡ください。

カスタマイズ

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

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

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