QUIC-based feed ingest & backhaul — replacing SRT
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
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.
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 --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 --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]
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.