Skip to content

Subscribing to Tracks

Terminal window
# Subscribe to a track and stream objects to the terminal
moqtap peek moqt://relay.example.com data live video
# Fetch only the latest object
moqtap peek moqt://relay.example.com data live video latest
# Raw payload output (for piping to other tools)
moqtap peek moqt://relay.example.com data live video --raw
# JSON output
moqtap peek moqt://relay.example.com data live video -j

The CLI auto-detects the payload format (JSON, fMP4, LOC/MSF binary, text) and renders it accordingly.

  1. Enter the namespace (e.g., ["chat"])
  2. Enter the track name (e.g., "messages")
  3. Select a filter type:
    • LatestObject — start from the latest available object
    • NextGroupStart — wait for the next group boundary
    • AbsoluteStart — start from group 0, object 0
    • AbsoluteRange — specific range of groups/objects
  4. Click Subscribe
SUBSCRIBE (sent) → SUBSCRIBE_OK (received) → objects flow → UNSUBSCRIBE (sent) → PUBLISH_DONE (received)

In draft-17, UNSUBSCRIBE is removed — the subscription lifecycle uses the consolidated request/response pattern with REQUEST_OK / REQUEST_ERROR.

moqtap shows each state transition in the control message log with timestamps.

Objects arrive on unidirectional QUIC streams (subgroup streams) or datagrams. Each object shows:

  • Group ID and Object ID
  • Subgroup assignment
  • Publisher priority and status
  • Payload — auto-detected as text, JSON, fMP4, or binary

The extension passively decodes subscription messages and object delivery from your application’s WebTransport connections. The DevTools panel shows subscriptions with namespace/track name display, live bitrate, and a stream data viewer with hex and JSON modes.

In the desktop app, click Unsubscribe to end the subscription. The relay responds with PUBLISH_DONE.