見出し画像

Media over QUIC Transport実装をOSSで公開しました

こんにちは。 SkyWayのWebRTC Researcherの ucchy( @yuki_wtz )です。

2024年9月2日に、Media over QUIC Transport実装(moq-wasm)をGitHubでOSSとして公開しました。

Media over QUIC Transportとは

Media over QUIC Transport(以下MOQT)は、QUIC/WebTransportプロトコルの上に構築される、リアルタイム映像・音声通信のためのプロトコルです。

具体的なユースケースとしては、Youtube・Twitchなどのような大規模ライブ配信サービスや、Zoom、Microsoft Teamsなどのようなウェブ会議サービスなどが挙げられます。

従来は、ライブ配信ではHLS、ウェブ会議ではWebRTCといったように、ユースケースによってプロトコルを使い分けていましたが、MOQTは複数のユースケースに対応できる柔軟性を持っており、SkyWayはHLSやWebRTCの次の技術としてMOQTに注目しています。

OSS公開への想い

SkyWayでは、MOQTの標準化への貢献およびリアルタイムコミュニケーションの発展に貢献することを目的に、moq-wasmをOSS化することにしました。

MOQT実装はmoq-rsmoxygenなどが既に公開されており、これらは盛んに開発が進められていますが、仕様策定完了まではまだまだ時間がかかります。

IETFでは相互接続試験を行い、そこで得られた知見をもとに仕様変更がされる場合も多くありますので、OSS化し相互接続試験に参加することでMOQTの標準化に貢献していきたいと考えています。

moq-wasmについて

moq-wasmは、今回SkyWayが公開したMOQT実装です。

私と同じWebRTC Researchチームの tetter( @tttr_mt ) と共に開発しました。

MOQTは、HLSやWebRTCと同様に、Webブラウザで動かすことを前提に仕様が定められているため、プロトコル部分をRustで実装し、wasm-bindgenでWebAssemblyでコンパイルすることでJavaScriptからもMoQ実装を呼び出すことを可能にしています。これによってサーバー・クライアントで共通のMoQ実装を使うことが出来るため、二重実装を避けることができました。

2024年Rust Webアプリ開発の現在 でも、この実装について発表していますので、興味がありましたらこちらもご確認ください。

相互接続試験について

moq-wasmは、MetaのMOQT実装である moq-encoder-playermoq-go-server とは相互接続試験を行っています。

SETUP/ANNOUNCE/SUBSCRIBE/OBJECT関連のメッセージのほとんどは相互接続が可能であることを確認しています。

今後について

現時点ではmoq-wasmはMedia over QUIC Transport のdraft-01 に準拠しているため、今後はdraft-05への追従を行なっていきます。

MetaのMOQT実装と相互接続試験を行う中で、仕様の不備に気づくこともあったため、仕様追従と相互接続試験を繰り返すことで標準化に貢献してきたいと考えています。

また、標準化貢献・リアルタイムコミュニケーションの発展に少しでも寄与できればと考えておりますので、GitHub上でdiscussionもオープンにしております。技術仕様の質問などもお気軽にいただければ幸いです。可能な範囲にはなりますがお答えさせていただきます。

SkyWayを一緒に作る仲間を募集しています

SkyWayでは、ソフトウェアエンジニア・マネージャーを募集しています。

XでのDMやカジュアル面談の応募、お待ちしております。


この記事が気に入ったらサポートをしてみませんか?