時雨堂の WebRTC に関する取り組み
WebRTC 関連でどんなことをやっているか、やっていこうかというのを書いていこうと思います。時雨堂が WebRTC で何をやろうとしているのかの可視化です。
毎月書いていこうと考えています。時雨堂の WebRTC 製品に興味がある方は読んでみていただけると嬉しいです。
今後 WebRTC SFU Sora は独立して書くことにしました。WebRTC SFU Sora については以下をご確認ください。
WebRTC Native Client Momo
詳細については OpenMomo プロジェクト をご確認下さい。
方針
WebRTC Native Client Momo はビルドの簡易化、libwebrtc への追従、単体で完結する事がメインです。
様々な OS やアーキテクチャーに対応しており、それらを簡易化し、誰もが簡単にビルドできるようにしています。また libwebrtc の最新バージョンに追従することで最新の技術を積極的に使えます。
ハードウェアエンコーダーへの対応も積極的にすすめています。現時点では Raspberry Pi と macOS 、Jetson Nano 、NVIDIA ビデオカードに搭載されているハードウェアエンコーダに対応しています。
H.265 対応
feature/h265 で対応済みです。
こちらはリリース予定は今の所ありませんので、試してみたい方は GitHub Actions が生成するバイナリか自前でビルドしてみてください。
libwebrtc M86 対応
対応済みです。
今後
Momo は一通り欲しい機能は実装した状態になったため、今後はメンテナンスフェーズとする予定です。libwebrtc のアップデートや AV1 などについては追従していきます。
WebRTC Signaling Server Ayame
詳細については OpenAyame プロジェクト をご確認下さい。
方針
WebRTC Signaling Server Ayame はベンダーロックフリーの WebRTC P2P サーバをオープンソースで公開するというのが目的です。ソースコードもそうですが、仕様自体もオープンに公開しています。
1対1 のやり取りとして絞り込むことでとてもシンプルな仕様を実現しています。
今後
Ayame (Go 実装) はメンテナンスモードで少しずつ改善をしていく予定です。Web SDK やサンプルにも手を入れてメンテナンスしていく予定です。
今後 P2P を利用した 1 対 1 での WebRTCは「無料で利用できる」が当たり前になっていくと考えています。そこに Ayame も食い込めればと考えています。
Erlang 版の提供を検討
現在 Ayame (Erlang/OTP 実装) の開発を進めています。これは Go 版と仕様自体は全く同じものですが、商用利用を意識した実装をしたものです。すでに Ayame Lite は Erlang/OTP 実装に置き換えてテストしてみています。
WebRTC React Native WebRTC Kit
サイマルキャストへの対応
libwebrtc のサイマルキャストの実装が落ち着いてきたこともあり、対応を進めています。2020 年内に公開予定です。
統計機能への対応
getStats への対応をしていく予定です。サイマルキャストの対応が終わったら対応予定です。
libwebrtc M86 へのアップデート
対応済みです。
React Native for macOS 対応
React Native for macOS 対応を進めています。現在試行錯誤中です。
React Native for Windows 対応
macOS 対応版が落ち着き次第、進めていく予定です。
Ayame lite
リニューアル
ずっとベータ版でやってきましたが、正式リリースに向けて準備中です。
- サインアップなしで利用可能は継続
- 無料で利用可能は継続
- 商用利用は推奨しないが申請すれば利用可能
- 動作保証などは一切ない
メンテナンスの通知などは今まで通り営業日、営業時間であれば Discord にて共有するが、それ以外の場合はサイレントで行うは継続します。
Sora Labo
サンプル周りを Sora デモベースにしたいと考えています。また E2EE は wasm 版に置き換える予定です。
また Momo を使って 4K@30fps や 1080p@60fps をを試してみたい方向けに帯域制限がないサーバを新規に立てるというのも考えています。