QuicFeed

QUIC-based feed ingest & backhaul — replacing SRT

FFmpeg (DASH) → tx (watch) → QUIC → rx (write) → Origin/CDN

Usage

1. Create a namespace and set tx/rx passwords at /admin

2. Start the receiver on use.l3dcmaf.com:

quicfeed-rx \
  --namespace youtube-nfl-001 \
  --password YOUR_RX_PASSWORD \
  --listen-addr 0.0.0.0:443 \
  --cert /etc/letsencrypt/live/use.l3dcmaf.com/fullchain.pem \
  --key /etc/letsencrypt/live/use.l3dcmaf.com/privkey.pem \
  --write /var/www/dash-in

3. Start the transmitter on usc.l3dcmaf.com:

quicfeed-tx \
  --namespace youtube-nfl-001 \
  --password YOUR_TX_PASSWORD \
  --rx-addr use.l3dcmaf.com:443 \
  watch --dir /tmp/dash-out
The tx requires a subcommand. Currently the only mode is watch --dir <PATH>, which watches a directory for new .mpd, .m4s, and .mp4 files and sends each one over QUIC as it appears. The rx writes received files to --write (omit to log only).

Each namespace has separate tx and rx passwords. Set them in the admin panel before connecting.

Self-Signed Certs (testing)

If you don't have Let's Encrypt certs, generate a self-signed cert:

openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 \
  -keyout key.pem -out cert.pem -days 365 -nodes \
  -subj "/CN=quicfeed"

quicfeed-tx

quicfeed-tx --namespace <NS> --password <PW> --rx-addr <HOST:PORT> <COMMAND>

Options:
  --namespace <NS>         Feed namespace (e.g. "youtube-nfl-001")
  --password <PW>          TX password for this namespace
  --rx-addr <HOST:PORT>    Receiver address to connect to
  --worker-url <URL>       Auth endpoint [default: https://quicfeed.net]

Commands (required):
  watch --dir <PATH>       Watch directory for DASH segments and send over QUIC

quicfeed-rx

quicfeed-rx --namespace <NS> --password <PW> --cert <FILE> --key <FILE> --write <DIR> [OPTIONS]

Options:
  --namespace <NS>         Feed namespace (e.g. "youtube-nfl-001")
  --password <PW>          RX password for this namespace
  --listen-addr <ADDR>     Listen address [default: 0.0.0.0:4443]
  --cert <FILE>            TLS certificate (PEM)
  --key <FILE>             TLS private key (PEM)
  --write <DIR>            Directory to write received files to
  --worker-url <URL>       Auth endpoint [default: https://quicfeed.net]

How It Works

Both tx and rx authenticate with this worker, then establish a direct QUIC connection. Each file is sent on its own unidirectional QUIC stream, eliminating head-of-line blocking — a retransmit on one segment never stalls delivery of later segments. The tx acquires a namespace lock (one active tx per namespace) refreshed via heartbeat every 15 seconds.


Open Admin Panel