Media over QUIC Transport (MoQT)
June 8, 2026 ยท View on GitHub
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:
- Creating a connection using either QUIC or WebTransport
- Establishing a MoQT session
- Implementing handlers for various MoQT messages
- 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 readersquicmoq/: QUIC-specific implementationwebtransportmoq/: WebTransport-specific implementationinternal/: Internal implementation detailsexamples/: Example applications demonstrating usageintegrationtests/: Integration tests
Requirements
- Go 1.23.6 or later
- Dependencies are managed via Go modules
License
See the LICENSE file for details.