OpenMomo プロジェクトがスタートしてからはや数ヶ月、やっと成果を公開できました。
ソースコードを Apache License 2.0 にて公開しました。もちろんバイナリも提供しています。x86_64、ARMv8、ARMv7、そしてなんと ARMv6 にも対応しています。
さらに Raspberry Pi 3 または Zero であればビデオコーデックに H.264 を指定することで GPU に搭載してあるハードウェアアクセラレータ機能を利用し、CPU をほとんど利用することなく配信が可能です。
ソフトウェアを気軽にフォークして使ってもらえればと考えています。オープンソースにすることでブラックボックスはなくなります。多くの人 Momo を使ってくれることを願っています。
ノーベンダーロック
Momo では P2P モードと Sora モードの二種類を用意しています。P2P モードではシグナリングサーバ機能も Momo にもたせてしまうことで、ベンダーロックを排除しています。P2P モードは固有のシグナリングサーバに依存したりは一切していません。気軽に使ってください。
シンプル
ソースコードを見てもらえればわかりますが、とてもコードベースが小さくシンプルです。これは長年 libwebrtc を利用して溜め込んできた tnoho のノウハウの塊です。ぜひソースコードを見てあげてください。
彼の libwebrtc のノウハウがぎゅっと詰まっています。
ビルド
今回公開に向けて一番力を入れたのはビルド周りです。徹底的に効率化とシンプルさ。さらに開発のしやすさを考えてビルドを整理してもらいました。ビルド職人である melpon が素晴らしいビルド環境を用意してくれました。クロスコンパイル環境さらには、Windows や macOS という部分のビルドも今後展開することを考慮してくれています。
ビルド職人の力を見せつけられました。
ハードウェアアクセラレーター
ラズパイの GPU が持っている H.264 のハードウェアエンコーダー機能を利用することで、CPU リソースをほとんど使うことなく配信することができます。
このパワーを使うことで 640x480 の VGA を 30fps で、なんとラズパイゼロから配信可能です。
さらに現在より低レイヤーな MMAL を利用して、より高画質で高フレームレートな配信を実現するために調査と開発を進めています。
Sora
最新の WebRTC SFU Sora に繋がります。
ビジネスモデル
Momo を利用したビジネスモデルは、WebRTC SFU Sora を売り上げるのがメインです。ただそれ以外にも考えています。
時雨堂ではカスタマイズを受けませんが、Momo の開発を手伝ってくれた人たちは別です。
ハードウェアアクセラレータはチップ依存のことがほとんどですので、様々なチップで動かしたければ必ずカスタマイズが必要になります。
また、独自シグナリングサーバにつなぎたい場合もカスタマイズが発生します。
時雨堂以外がカスタマイズを受けることで、周りの人の仕事を作るというビジネスモデルです。
時雨堂
Momo は小さな小さな WebRTC Native Client フレームワークでもあります。時雨堂ではそれを継続的に開発、維持していきます。それがどれだけ価値があるかは WebRTC を少しでも知っている人はわかると思います。
さらに WebRTC SFU Sora のライセンス契約している方に対しては Momo のテクニカルサポートを有償で提供します。
- Momo は継続的な開発と維持を時雨堂が可能な限り保証します
- Apache License 2.0 としてソースコードを公開し続けます
- P2P モードを利用すればベンダーロックされません
- WebRTC SFU Sora との接続は保証されます
- Raspberry Pi 向けのハードウェアアクセラレータに対応しています
- x86_64、ARMv8、ARMv7、ARMv6 といったアーキテクチャに対応します
- Windows / macOS といった OS に対応していきます
- データチャネルやサイマルキャストへもチャレンジしていきます
ユースケース
Momo のユースケースは監視カメラ、ロボット、遠隔医療、遠隔操作、自動運転、様々な利用が考えられます。
今後エッジデバイスでの解析が中心となっていく中で、音声や映像を超低遅延でブラウザなどに配信できる技術である WebRTC という土管はとても重要になっていくでしょう。
Momo はそのエッジデバイスがステージです。是非皆さんのアイデアで様々な使い方をしてみてください。
謝辞
WebRTC Native Client Momo が公開できたのは tnoho おかげでです。本当にありがとう。そしてビルド職人である melpon 、様々なアドバイスをくれた uupaa 、ありがとう。
そして何やってるかよくわからないのを、信頼して自由にやらせてくれる社員たちありがとう。
多くの人のおかげで公開まで来ました、今後も Momo をより良い WebRTC Native Client を提供していきます。