Skip to content

Latest commit

 

History

125 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

moqpush

Open source MoQ publisher. Takes CMAF-IF input and publishes to any MoQ relay via MoQ Transport.

Quick Start

Standalone (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 CMAF-IF output at port 9078

Connects to Cloudflare's public MoQ relay by default. Use --relay-url to override.

Test mode (verify encoder output, no relay needed)

moqpush-app --test --port 9078

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

Player

Option 1: moqplay.com — open source web player, no install needed

Visit moqplay.com, enter your relay URL and namespace, and play. Supports MoQ Lite and MoQ v14 (Cloudflare) relays. Source: github.com/erikherz/moqplay

Option 2: Shaka Player — save as HTML, open in Chrome:

<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:// — WebTransport handles encryption.


Managed CDN via moqcdn.net

  1. Create an account at moqcdn.net
  2. Create a namespace → get a push key
  3. Run the publisher:
moqpush-app --push-key mpk_XXX --tracks 2v1a --target-latency 500 --port 9078
  1. Watch at moqcdn.net/{namespace}

No relay to run. Global relay network with Viper player, ABR, relay racing, and sub-second latency.


Options

Flag Default Description
--test Test mode: print fragment info, no relay
--namespace Namespace (standalone mode, no Worker)
--relay-url Cloudflare Relay URL (standalone mode, override default)
--push-key Push key (managed mode, from moqcdn.net)
--worker-url moqcdn.net Worker URL (managed mode)
--tracks Wait for N video + M audio inits (e.g. 2v1a)
--target-latency 2000 Target latency in ms (published in catalog)
--port 9078 HTTP CMAF-IF ingest port
--tls-disable-verify false Skip TLS cert verification (self-signed relay certs)

Creating Source Files

See ffmpeg-gpac-how-to.md for creating CMAF-IF source files with FFmpeg and pushing them to moqpush with GPAC.

Building

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

License

Apache 2.0

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages