MoQ (Media over QUIC) 是一种利用 QUIC 传输交付实时媒体内容的协议。它通过利用 QUIC 的多路复用和连接管理功能提供高效、低延迟的媒体流传输。
MoQ 旨在成为一种互联网基础设施层面的服务,为应用程序提供媒体交付,类似于 HTTP 提供内容交付以及 WebRTC 提供实时通信。
Cloudflare 对 MoQ 的实现目前支持 draft-07 MoQ Transport 规范 ↗ 的子集。
关于该协议的最新文档,请访问 IETF 工作组文档。
-
Safari 支持情况如何?
Safari 尚未具备完全功能的 WebTransport 支持。Apple 从未公开承诺此类新功能的时间表。然而,Apple 已经表达了其支持 WebTransport 的意向 ↗。一位 Apple 员工甚至是 WebTransport over HTTP/3 ↗ 草案的共同作者。自 Safari 18.4 (2025-03-31) 起,WebTransport API 的早期(尚未完全功能)实现已可在开发者模式 / 高级设置功能标志后进行测试(包括 iOS 上)。
在 Safari 拥有完全功能的 WebTransport 实现之前,某些 MoQ 使用场景可能需要回退到 WebRTC,或者在某些情况下回退到 WebSockets。
-
额外的 Subgroup 标头字段
当前的实现包含 Subgroup Headers 中的
subscribe_id字段,而draft-ietf-moq-transport-07↗ 省略了该字段。在 7.3.1 节中,
draft-ietf-moq-transport-07规定 ↗:STREAM_HEADER_SUBGROUP Message { Track Alias (i), Group ID (i), Subgroup ID (i), Publisher Priority (8), }而我们的实现期望并生成:
STREAM_HEADER_SUBGROUP Message { Subscribe ID (i), Track Alias (i), Group ID (i), Subgroup ID (i), Publisher Priority (8), }这是从之前的草案版本中错误遗留的,将在未来的版本中修复。感谢 @yuki-uchida ↗ 的反馈报告。