Open source MoQ player for low-latency live streaming.

GitHub Publisher
Try It
Enter a relay URL and namespace to start
Features

Sub-Second TTFF

~350-550ms time-to-first-frame on nearby relays. Direct MSE rendering with no player library overhead.

WebSocket Fallback

Automatic fallback to WebSocket for Safari and restrictive networks. Races WebTransport vs WebSocket.

Adaptive Bitrate

Buffer-based ABR with automatic track switching. Supports multi-rendition CMAF streams.

Zero Dependencies

No Shaka, dash.js, or HLS.js. Three standalone JS files — drop into any page.

Codec Auto-Detection

Parses H.264 (avcC) and AAC (esds) codec info directly from init segments. No manual configuration.

Relay Transport Stats

RTT, throughput, and packet loss from the relay's perspective via the relay-stats MoQ track.

Usage

Embed in your page

<video id="video" autoplay muted playsinline></video>
<script src="qmux.js"></script>
<script src="fragment-appender.js"></script>
<script src="moqt-player.js"></script>
<script>
  const player = new MoqtPlayer({
    relayUrl: 'https://your-relay.example.com',
    namespace: 'your-stream',
    video: document.getElementById('video'),
  });
  player.connect();
</script>

Or use URL parameters

index.html?relay=https://relay.moqcdn.net&ns=my-stream