Documentation Index
Fetch the complete documentation index at: https://mintlify.com/moqtail/moqtail/llms.txt
Use this file to discover all available pages before exploring further.
What is MOQT?
Media over QUIC Transport (MOQT) is a protocol designed for efficient delivery of live and on-demand media content over QUIC connections. Built on top of QUIC’s reliable transport layer, MOQT enables low-latency streaming while maintaining the flexibility to handle various media delivery patterns.MOQtail implements Draft-14 of the MOQT specification (
0xff00000e). The protocol is under active development and may evolve as the specification matures.Core Protocol Features
QUIC Foundation
MOQT leverages QUIC’s features to optimize media delivery:- Multiple streams: Independent delivery paths for different content
- Stream prioritization: Control which content gets bandwidth priority
- Connection migration: Seamless network transitions
- Built-in encryption: TLS 1.3 security by default
WebTransport Integration
MOQtail uses WebTransport as the transport layer, enabling MOQT in web browsers:The
MOQtailClientOptions type provides full control over protocol negotiation, timeouts, and lifecycle callbacks.Protocol Architecture
Control Stream
The control stream is a bidirectional QUIC stream used for protocol negotiation and coordination:Data Delivery Modes
MOQT supports two primary data delivery mechanisms:Subgroup Delivery
Ordered, reliable delivery using unidirectional QUIC streams:- Use case: Live video streams, where frames within a GOP need reliable delivery
- Benefit: Automatic retransmission of lost data within a stream
- Stream management: One stream per group, closed when group completes
Datagram Delivery
Unreliable, low-latency delivery using QUIC datagrams:- Use case: Real-time audio, sensor data, low-latency video
- Benefit: Minimal latency, no head-of-line blocking
- Trade-off: No retransmissions for lost packets
When to use each delivery mode
When to use each delivery mode
Use Subgroup delivery when:
- Content requires reliable delivery (video keyframes, critical data)
- Group boundaries align with natural content boundaries (GOPs)
- Slight latency increase is acceptable for quality
- Minimizing latency is critical
- Content can tolerate occasional loss (B-frames, audio)
- Real-time interactivity is required
Object Locations
Every object in MOQT is uniquely identified by its location:- Group: Logical grouping of related objects (e.g., a GOP in video)
- Object: Individual data unit within a group (e.g., a frame)
Locations enable precise range requests for both live subscriptions and historical fetches.
Object Status Codes
Objects can carry status information beyond normal payload data:- Gap detection: Identify missing objects in historical data
- Boundary signaling: Know when groups/tracks end
- Efficient caching: Store metadata without payload
Subscription Filters
Clients can request specific portions of a track using filter types:Priority System
MOQT uses a dual-priority system to optimize bandwidth allocation:Publisher Priority
Publishers assign priority (0-255) to indicate content importance:Subscriber Priority
Subscribers indicate their interest level:The combined priority (weighted average of publisher and subscriber priorities) determines stream prioritization in the QUIC transport layer.
Error Handling
The protocol includes comprehensive error codes for different operations:Extension Headers
MOQT supports optional extension headers for metadata:- Capture Timestamp: Original media capture time
- Audio Level: RMS audio level indicator
- Video Frame Marking: Frame dependencies and structure
- Video Config: Codec configuration data
Extension headers are sent with objects when present, enabling advanced media processing and synchronization.
Protocol Lifecycle
- Connection establishment: WebTransport connection to relay
- Setup handshake: Exchange supported versions and parameters
- Namespace publication: Publishers announce available content
- Track discovery: Subscribers discover available tracks
- Data exchange: Subscribe/Fetch operations deliver content
- Graceful shutdown: GoAway messages coordinate termination
Next Steps
Learn about tracks and objects, the fundamental data structures in MOQT