Skip to content

What is MoQ?

Media over QUIC (MoQ) is a next-generation live media protocol. As the name implies, we use QUIC to concurrently transmit media and avoid latency build-up during congestion. The protocol is being standardized by the IETF and backed by some of the largest tech companies: Google, Cisco, Akamai, Cloudflare, etc.

moq.dev is an open source implementation written in Rust (native) and Typescript (web). We support compatibility with the official IETF drafts, but the main focus is a subset called moq-lite and hang. The idea is to build first, argue later.

See the concepts page for a breakdown of the layering, rationale, and comparison to other protocols.

Setup

Get up and running in seconds with Nix (+Flakes), or be lame and install stuff manually:

bash
# Runs a relay, media publisher, and the web server
nix develop -c just dev

If everything works, a browser window will pop up demoing how to both publish and watch content via the web.

Applications

There are a bunch of MoQ binaries and plugins.

Some highlights:

  • moq-relay - A server connecting publishers to subscribers, able to form a self-hosted CDN cluster.
  • moq-cli - A CLI that can import and publish MoQ broadcasts from a variety of formats (fMP4, HLS, etc), including via ffmpeg.
  • obs - An OBS plugin, able to publish a MoQ broadcast and/or use MoQ broadcasts as sources.
  • gstreamer - A gstreamer plugin, split into a source and a sink.
  • web - A web component you can slap on your website to watch and publish MoQ broadcasts.
  • ...and more

Rust Crates 🦀

Integrate MoQ into your application without fear. Focused on native but has token WASM support.

Some highlights:

  • moq-lite - Performs the core asynchronous networking, caching, and fanout.
  • moq-mux - Media muxers/demuxers for fMP4, CMAF, and HLS import.
  • libmoq - C bindings for the above, no finagling Rust into your build system.
  • web-transport - A suite of crates required to get QUIC access in the browser, plus some polyfills.
  • ...and more

TypeScript Packages

Run MoQ in a web browser utilizing the latest Web tech. Or run on native with polyfills via Node/Bun/Deno.

Some highlights:

Licensed under MIT or Apache-2.0