時雨堂の WebRTC に関する取り組み
WebRTC 関連でどんなことをやっているか、やっていこうかというのを書いていこうと思います。時雨堂が WebRTC で何をやろうとしているのかの可視化です。
毎月書いていこうと考えています。時雨堂の WebRTC 製品に興味がある方は読んでみていただけると嬉しいです。
今後 WebRTC SFU Sora は独立して書くことにしました。WebRTC SFU Sora については以下をご確認ください。
おしらせ
時雨堂の CTO である SUZUKI Tetsuya が個人で WebRTC ネイティブライブラリガイド for iOS and Androidという解説書を書きました。主に libwebrtc をモバイルで活用するという内容になるとのことです。 CTO は WebRTC SFU Sora の iOS / Andoird SDK のメイン開発者であり、React Native WebRTC Kit のメイン設計者です。libwebrtc をモバイルで使うノウハウを多く持っています。
継続的に更新されるということですので、興味ある人はぜひ買ってみて下さい。
WebRTC Native Client Momo
詳細については OpenMomo プロジェクト をご確認下さい。
方針
WebRTC Native Client Momo はビルドの簡易化、libwebrtc への追従、単体で完結する事がメインです。
様々な OS やアーキテクチャーに対応しており、それらを簡易化し、誰もが簡単にビルドできるようにしています。また libwebrtc の最新バージョンに追従することで最新の技術を積極的に使えます。
ハードウェアエンコーダーへの対応も積極的にすすめています。現時点では Raspberry Pi と macOS 、Jetson Nano 、NVIDIA ビデオカードに搭載されているハードウェアエンコーダに対応しています。
libwebrtc M88 対応
対応済みです
Jetson Nano の VP8 HWA 対応
対応済みです
今後
メンテナンスフェーズです。libwebrtc を淡々と上げていきます。
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
サイマルキャストと統計機能へ対応したタイミングで React Native WebRTC Kit はメンテナンスモードへ入る予定です。
macOS / Windows へのネイティブアプリ対応を検討していたのですが、残念ながらリソース不足と経験不足で手が回らないというのが現状です。
Sora iOS / Android SDK にリソースを集中します。
サイマルキャストへの対応
libwebrtc のサイマルキャストの実装が落ち着いてきたこともあり、対応予定ですが、少しお休みをはさみます。
統計機能への対応
getStats への対応をしていく予定です。サイマルキャストの対応が終わったら対応予定ですが、少しお休みをはさみます。
libwebrtc M88 へのアップデート
対応予定です。
libwebrtc パッケージの独立
今までは Sora SDK 向けに作っていたものを利用していましたが React Native WebRTC SDK 向けに独立させます。
Ayame Labo
Ayame Lite の正式版である Ayame Labo をリリースしました。今までとほぼ変わりません。サインアップすれば商用でも利用可能なので、是非使ってみて下さい。最低限の機能に留めることで運用コストをできるだけ抑えていく方針です。
Sora Labo
E2EE を WebAssembly ベースに置き換えました。
また Momo を使って 4K@30fps や 1080p@60fps をを試してみたい方向けに帯域制限がない人向けの Vultr ベースのサーバを用意しました。