Wall-Clock Synchronized MOQ Streaming Test Service

Implements draft-14 of the MOQ Transport protocol, MSF v0 (draft-ietf-moq-msf-00), and CMSF v0 (draft-ietf-moq-cmsf-00). Streams synchronized multi-bitrate video and audio tracks.

⚠️ Work in Progress This service implements a subset of the evolving MOQ specifications. Check the GitHub repository for the latest development status and supported features.
πŸš€ MOQ Transport draft-14
🎬 MSF/CMSF v0
🌐 WebTransport Ready
πŸ“Ί Multi-bitrate Support
Try WARP Player Now

Why Use MoqLiveMock?

Test your MOQ client implementations against a reliable, always-available server implementing parts of the latest drafts. MoqLiveMock simulates a true live MOQ streaming service with UTC-aligned content deliveryβ€”all clients receive synchronized streams regardless of join time. Stream 10-second loops of synchronized multi-bitrate content with CMAF chunks over QUIC.

Available Streams

Specially prepared relatively low-bitrate content for testing

πŸŽ₯ Video Tracks

H.264 (AVC) and HEVC encoded video streams at multiple bitrates for adaptive streaming

  • 400 kbps AVC
  • 600 kbps AVC
  • 900 kbps AVC
  • 400 kbps HEVC
  • 600 kbps HEVC
  • 900 kbps HEVC

🎡 Audio Tracks

Easily discernable audio tracks in AAC, Opus, and AC-3 with synchronized second beeps

  • Monotonic AAC (128 kbps)
  • Scale AAC (128 kbps)
  • Monotonic Opus (128 kbps)
  • Scale Opus (128 kbps)
  • Monotonic AC-3 (128 kbps)
  • Scale AC-3 (128 kbps)

πŸ“ Subtitle Tracks

Subtitle tracks in CMAF-compatible formats for testing text rendering

  • WVTT (WebVTT in CMAF)
  • STPP (TTML in CMAF)

⚑ Technical Specs

Modern streaming protocols and formats

  • CMAF chunks
  • 10-second loops
  • Wall-clock synchronized
  • MSF/CMSF catalog

Live Streaming Simulation

UTC-aligned streaming for consistent playback across all clients

πŸ• Wall-clock Alignment

MoqLiveMock simulates a live MOQ streaming service with precise UTC time alignment. This ensures all subscribers receive synchronized content regardless of when they join or when the publisher was started.

Two-Level Time Alignment

1.
10-Second Asset Loop is aligned to UTC modulo 10 seconds
The first sample of the clip maps to epoch times where seconds % 10 == 0. This ensures every subscriber joining at the same wall-clock time receives the same content.
2.
MoQ Groups are aligned to full UTC seconds
Each group number equals Unix_epoch_ms / 1000, so group boundaries fall on exact second boundaries.
πŸ’‘ No Drift: Audio is typically not compatible with integral seconds, so minimal displacement is applied without accumulated drift over time.

How to Use

Multiple ways to connect and stream content

🌐 Browser Player (Recommended)

Use the WARP Player for instant playback in your browser (Chrome or Firefox). No installation required.

Open WARP Player

πŸ’» Command Line Client

For developers and advanced users, use mlmsub to stream from the terminal:

# Install the client
go install github.com/Eyevinn/moqlivemock/cmd/mlmsub@latest

# Stream and write video AVC 400kbps to file 
mlmsub -addr moqlivemock.demo.osaas.io -videoname _avc -videout video400kbps_avc.mp4

# Select specific tracks
mlmsub -addr moqlivemock.demo.osaas.io:443 -videoname 600_avc -audioname _aac -muxout - | ffplay -

# Select specific tracks and use WebTransport
mlmsub -wt -addr https://moqlivemock.demo.osaas.io:443 -videoname 600_avc -audioname _aac -muxout - | ffplay -

# Enable debug logging
mlmsub -addr moqlivemock.demo.osaas.io:443 -loglevel debug -muxout - | ffplay -

πŸ”§ Run Your Own Server

Clone the repository and run your own MoqLiveMock instance:

# Clone and build
git clone https://github.com/Eyevinn/moqlivemock
cd moqlivemock
go build ./cmd/mlmpub

# Option 1: Using mkcert (recommended for development)
mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1
mkcert -install
./mlmpub -cert cert.pem -key key.pem -addr localhost:4443

# Option 2: Using certificate fingerprint (no installation needed)
# Auto-generates WebTransport-compatible certificates
./mlmpub -fingerprintport 8081

# Or use your own WebTransport certificate
cd cmd/mlmpub
./generate-webtransport-cert.sh
./mlmpub -cert cert-fp.pem -key key-fp.pem -fingerprintport 8081

When using fingerprint mode, connect with WARP Player using:
β€’ Server URL: https://localhost:4443/moq
β€’ Fingerprint URL: http://localhost:8081/fingerprint

Part of the Eyevinn Open Source Ecosystem