MoQ(Media over QUIC)は、QUIC トランスポートを使ってライブメディアを配信するプロトコルです。QUIC の多重化と接続管理を活かし、効率的で低レイテンシのメディアストリーミングを提供します。
MoQ は、アプリケーションへメディア配信を提供するインターネットインフラレベルのサービスとして設計されています。HTTP がコンテンツ配信を、WebRTC がリアルタイム通信を提供するのと同様です。
Cloudflare は現在、MoQ Transport 仕様の draft-14 ↗ と draft-16 ↗ をサポートしています。ドラフトごとの対応メッセージの一覧は MoQ Feature Matrix を参照してください。
プロトコルの最新ドキュメントは、IETF ワーキンググループのドキュメントを参照してください。
Cloudflare の MoQ リレーは、Cloudflare ダッシュボード ↗ と API から利用できます。ベータ期間中は無料です。
各リレーは独立したスコープを持ちます。名前空間、トラック、オブジェクトは、ほかのリレーのものと分離されます。発行するトークンのスコープで、公開できるユーザーと購読できるユーザーを制御します。
API でリレーを作成するには、次のコマンドを実行します。
curl -X POST \
"https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/moq/relays" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "My Relay"}'Cloudflare はリレー ID と、デフォルトのトークン 2 つを返します。1 つは公開と購読が可能で、もう 1 つは購読のみです。トークンのシークレットはレスポンスで一度だけ表示され、保存されません。
リレーの作成と管理は、Cloudflare ダッシュボードの Media > Realtime > MoQ Relay でも行えます。
Draft-16 では認証が必要です。クライアントは MoQ セッションを開くとき、URL パスにトークンを送ります。オープンソースの moq-rs ↗ ツールを使う例:
Publisher:
ffmpeg -stream_loop -1 -re -i input.mp4 \
-f mp4 -movflags empty_moov+frag_every_frame+separate_moof+omit_tfhd_offset - \
| moq-pub --name my-namespace \
"https://draft-16.cloudflare.mediaoverquic.com/<publish_subscribe_token>"Subscriber:
moq-sub --name my-namespace \
"https://draft-16.cloudflare.mediaoverquic.com/<subscribe_token>" \
| ffplay -hide_banner -Draft-14 のクライアントは次の URL に接続します。
https://draft-14.cloudflare.mediaoverquic.com/Cloudflare は、グローバル展開に先立ち draft-18 のサポートに取り組んでいます。その間に draft-18 リレーを試す場合は、moq-interop-runner ↗ を参照してください。