Sora MoQ (Media over QUIC) を公開しました
今回、時雨堂では WebRTC SFU Sora とは別に Sora MoQ (Media over QUIC) を公開しました。Media over QUIC は音声や映像、データを QUIC ベースで配信する仕組みです。
現在まだ RFC ドラフトではありますが、とりあえず動くところまで実装しましたので、Sora Labo にて誰もが試せるように公開しました。
まだまだ遅延派詰められると思いますが、安定性を最優先です。
今後は Sora Cloud での提供を目指します。将来的にはパッケージでの提供も予定しています。
技術的な話
Sora MoQ は全てのプロトコルをフルスクラッチで Erlang/OTP にて実装しています。
- QUIC
- Multipath QUIC
- HTTP/3
- HTTP/2
- WebTransport over HTTP/2
- WebTransport over HTTP/3
- MOQT (Media over QUIC Transport)
- LOC (Low Overhead Media Container)
- MSF (MOQT Streaming Format)
- C4M (CAT 4 MOQT)
相互接続として ngtcp2 / nghttp3 / nghttp2 、s2n-quic 、picoquic、aioquic 、Chrome (WebTransport) 、WebKit (WebTransport ) 、Firefox (WebTransport) との動作を確認しています。
moqt-js / moqt-rs / moqt-py
時雨堂では MOQT ライブラリを TypeScript と Rust と Python (PyO3 を利用して moqt-rs を利用) の 3 つの言語で Sans I/O にて実装して OSS (Apache-2.0) として公開しています。
Sora MoQ SDK
絶賛開発中です。既に Swfit (iOS) と Kotlin (Android) からの動作は確認済みです。TypeScript と Rust と Swift と Kotlin と Python の SDK を提供予定です。
認証
MoQ 向けの C4M (CAT 4 MOQT) を採用しました。URI Fragment (#msf: ... c4m=<token>) を使う招待 URI の仕組みを Sora Labo で採用しています。依存を減らすため CBOR も時前実装しています。
Momo (MoQ)
WebRTC Native Client Momo の MoQ 版を開発中です。気軽に MoQ を使えるようにしたいです。
Zakuro (MoQ)
MoQ 用の負荷試験ツールも開発中です。
今後
既に Sora MoQ の QUIC 実装は Multipath QUIC で実装しているので、それを利用できる QUIC ライブラリを Rust で実装しています。MoQ + Multipath QUIC を実現できればと思います。ドラフトにも積極的に追従していきます。
もし興味がある人は Sora MoQ を触ってみてください。