跳到正文
发现
命令行工具开发者工具

MoQ:实时直播媒体传输协议栈

基于 QUIC 的实时直播媒体协议与 Rust / TypeScript 实现,面向需要低延迟、大规模分发的开发者和运维者。

admin
发布于 2026-10-28 · 更新于 2026-10-31
浏览
4
访问
0
下载
0
版本
vmoq-ffi-v0.4.20
平台
Linux、macOS
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

Media over QUIC(MoQ)是一个新一代实时媒体协议,目标是在大规模分发下提供实时延迟。它基于现代 Web 技术构建,能给出接近 WebRTC 的延迟,却没有 WebRTC 的那些限制;核心网络层交给 QUIC 库,其余部分都在应用空间里实现,媒体管线完全可控。

本仓库实现的是 moq-lite,即 IETF moq-transport 草案的前向兼容子集,可以与任何 moq-transport CDN(例如 Cloudflare)配合使用。它的目标更聚焦,优先考虑简单性和可部署性。

主要功能

  • 实时延迟:利用 QUIC 的优先级和部分可靠性。
  • 大规模:为 fan-out 场景设计,支持跨区域集群。
  • 现代 Web:使用 WebTransport、WebCodecs 和 WebAudio。
  • 多语言:同时提供 Rust(原生)与 TypeScript(Web)库。
  • 通用:适用于任何实时数据,不只限于媒体;文本聊天既是示例,也是核心功能。

协议采用分层设计,CDN 不需要了解应用、编解码器或轨道,业务逻辑完全留在客户端侧:

┌─────────────────┐
│   Application   │  业务逻辑:鉴权、非媒体轨道等
├─────────────────┤
│      hang       │  媒体编码与流式传输:编解码器、容器、catalog
├─────────────────┤
│    moq-lite     │  通用发布/订阅传输:broadcast、track、group、frame
├─────────────────┤
│  WebTransport   │  浏览器兼容的 QUIC
│      QUIC       │  HTTP/3 握手、多路复用等
└─────────────────┘

主要库对照(Rust / TypeScript):

层 Rust TypeScript
实时发布订阅 moq-net @moq/net
媒体 catalog 与容器 hang、moq-mux @moq/hang
采集与播放 moq-audio、moq-video @moq/publish、@moq/watch
房间与聊天 moq-room @moq/room
授权 moq-auth @moq/auth

Rust 核心还提供 Python、Swift、Kotlin、Go、Dart、C++ 和 C 绑定。

安装与使用

完整文档在 doc.moq.dev。按需求选择入口:

最快的体验方式需要带 flakes 的 Nix:

# 启动 relay、演示媒体和 Web 服务器
nix develop -c just

运行后会在浏览器打开 watch、publish 和 stats 页面,也可以直接访问 http://localhost:5173/watch.html。没有 Nix 时请参考 demo 指南手动搭建。

仓库开发使用 just:

just --list    # 查看所有命令
just build     # 构建全部
just check     # 对分支改动做 lint、编译与测试

注意事项

  • release 分支是稳定分支,也是发布来源;main 是主干,破坏性 API 变更会在两次发布之间进入 main。所有包遵循 semver,破坏性 API 变更会递增第一个非零版本号。
  • 破坏性的线路格式变更极少发生。
  • 项目同时以 Apache-2.0 与 MIT 许可发布;例外是 cpp/obs/ 下的 OBS 插件,因链接 OBS Studio 的 libobs 而采用 GPL-2.0-or-later,属于可单独分发的工作,不影响项目其余部分的 MIT/Apache 许可。

本作品整理自 GitHub 开源项目 moq-dev/moq,原作者 @moq-dev,许可证 Apache-2.0。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. vmoq-ffi-v0.4.20当前版本

    修复 flate 解压超大帧、net 对等端错误码与部分 lite group 处理;回移 relay 的 mesh gossip 修复;auth 支持 WebTransport 等传输名;修复 fMP4 导出中的 Opus 时间戳;升级多个 JS 包版本。

  2. vmoq-ffi-v0.4.19

    0.4.19:修复音频缓冲和订阅重排解码,改进 PUBLISH_NAMESPACE、WebTransport 头限制、H.265 画面比例及 HLS 导入,并为 FFI 增加 drain()。

  3. vobs-moq-v0.6.18

    新增 moq-rtsp crate,支持导入 RTSP;moq-net 支持压缩轨道;QUIC 层改为流与数据报使用发送选项并收紧发送域;补充各包 MIGRATE.md 文档与 Nix 构建配置。

评论