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.
Overview
Tracks are the fundamental unit of content organization in MOQT. A track represents a logical stream of media or data, identified by a unique namespace and name combination. Publishers create tracks to make content available to subscribers.Each track must be registered with the client using
addOrUpdateTrack() before it can be published to subscribers.Track Structure
Every track in Moqtail is defined by theTrack interface:
Track Components
Full Track Name
The globally unique identifier for your track, consisting of a namespace and name:
- Namespace can have 1-32 segments separated by
/ - Total serialized length must be under 4096 bytes
- Names are case-sensitive
Forwarding Preference
Controls how objects should be delivered to subscribers:
| Preference | Use Case | Transport |
|---|---|---|
Datagram | Real-time audio/video where latency matters more than reliability | QUIC datagrams |
Subgroup | Reliable delivery where all objects must arrive | QUIC streams |
Track Source
Defines where content comes from - can be live, static, or hybrid. See content source patterns for details.
Creating Objects
All content is packaged asMoqtObject instances before being added to a track:
Object Location
Objects are positioned using a two-level hierarchy:Registering Tracks
Once you’ve defined a track, register it with the client:Complete Example
Here’s a complete example creating a live video track:Removing Tracks
To stop publishing a track:Removing a track doesn’t cancel active subscriptions immediately. They continue until normal completion or until subscribers unsubscribe.
Best Practices
Naming Convention
Use hierarchical namespaces that reflect your application structure:
app/feature/resource(e.g.,video/conference/room42)- Keep names descriptive but concise
- Use consistent separators (e.g., always
/not mixed with-)
Priority Management
- Reserve 0-31 for critical content (keyframes, control data)
- Use 32-127 for normal content (regular frames)
- Use 128-255 for low-priority content (thumbnails, analytics)
Object Organization
- Align groups with natural boundaries (GOPs, segments, files)
- Keep object IDs sequential within groups
- Use end-of-group markers for proper signaling
Next Steps
Live Streaming
Learn how to create real-time streaming tracks
Static Content
Publish pre-recorded or cached content
Hybrid Content
Combine live and static delivery
Namespaces
Organize and announce your tracks