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
seconds % 10 == 0.
This ensures every subscriber joining at the same wall-clock time receives the same content.
Unix_epoch_ms / 1000,
so group boundaries fall on exact second boundaries.
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.
π» 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