Media over QUIC Transport (MoQT)

June 8, 2026 ยท View on GitHub

Go Reference

moqtransport is a Go implementation of Media over QUIC Transport on top of quic-go and optionally webtransport-go.

This is a fork of github.com/mengelbart/moqtransport due to slow progress on the upstream repository.

Overview

This library implements the Media over QUIC Transport (MoQT) protocol as defined in draft-ietf-moq-transport-14 and draft-ietf-moq-transport-16, with the protocol version negotiated via ALPN. MoQT is designed to operate over QUIC or WebTransport for efficient media delivery with a publish/subscribe model.

Implementation Status

This code, as well as the specification, is work in progress. The implementation currently covers most aspects of the MoQT specification (draft-14 and draft-16), including:

Session establishment and initialization
Version negotiation via ALPN (draft-14 and draft-16)
Control message encoding and handling
Data stream management
Track announcement and subscription
FETCH, including object delivery on fetch streams
Error handling
Support for both QUIC and WebTransport

Areas for Future Development

Exposure of more parameters ...

Usage

See the date examples in the examples directory for a simple demonstration of how to use this library.

Basic usage involves:

  1. Creating a connection using either QUIC or WebTransport
  2. Establishing a MoQT session
  3. Implementing handlers for various MoQT messages
  4. Publishing or subscribing to tracks

Extension Headers

Objects support extension headers via the ExtensionHeaders field on Object and the WriteObjectWithHeaders method on Subgroup and FetchStream.

The moqmi sub-package provides builders and readers for MoQ Media Interop extension headers (video H264 AVCC, audio Opus, audio AAC-LC, UTF-8 text).

Project Structure

  • moqmi/: MoQ Media Interop extension header builders and readers
  • quicmoq/: QUIC-specific implementation
  • webtransportmoq/: WebTransport-specific implementation
  • internal/: Internal implementation details
  • examples/: Example applications demonstrating usage
  • integrationtests/: Integration tests

Requirements

  • Go 1.23.6 or later
  • Dependencies are managed via Go modules

License

See the LICENSE file for details.