Open source MoQ publisher for CMAF

GitHub FFmpeg + GPAC Guide
Quick Start

Standalone mode (free, uses Cloudflare's public MoQ relay)

RUST_LOG=info moqpush-app --namespace my-stream --tracks 2v1a --target-latency 500 --port 9078

# Point your encoder's HTTP DASH-IF output at port 9078

Test mode (verify encoder output, no relay needed)

moqpush-app --test --port 9078

# Point your encoder at port 9078 - fragment info printed to console

Play in browser

Save as an HTML file and open in Chrome - no server needed:

<script src="https://shaka-project.github.io/shaka-player/dist/shaka-player.experimental.debug.js"></script>
<video id="v" controls autoplay muted></video>
<script>
  shaka.polyfill.installAll();
  const player = new shaka.Player();
  player.attach(document.getElementById('v'));
  player.configure({
    streaming: { lowLatencyMode: true },
    manifest: { msf: { namespaces: ['my-stream'] } }
  });
  player.load('https://draft-14.cloudflare.mediaoverquic.com/', undefined, 'application/msf');
</script>

Replace my-stream with your namespace. Works from file://

Build from source

git clone https://github.com/erikherz/moqpush-open.git
cd moqpush-open
cargo build --release
# Binary at target/release/moqpush-app
Features

Any MoQ Relay

Works with Cloudflare's public relay, moq-dev/moq, or any MoQ Transport relay.

Low Latency

MoQ over QUIC/WebTransport. No HLS/DASH buffering delays.

Standard Ingest

HTTP DASH-IF from any encoder: Ateme, FFmpeg, GPAC, OBS.

Multi-Quality

Publish multiple video tracks for ABR. Use --tracks 3v1a for 3 qualities.

Shaka Player

Play in any browser with Shaka Player's MoQ/MSF support. No plugins.

Open Source

Apache 2.0. Built on moq-dev/moq by Luke Curley.

Commercial Extensions

For managed CDN, global relay network, ABR, ad insertion, and enterprise support, contact erik@vivoh.com