Media-over-QUIC clients
| supported codecs | |
|---|---|
| video | AV1, VP9, VP8, H265, H264 |
| audio | Opus, MPEG-4 Audio (AAC) |
Media-over-QUIC is a streaming protocol built upon cutting edge protocols (QUIC, HTTP3) and browser APIs (WebTransport, WebCodecs) that can be used to publish and read live media streams. It’s slightly faster than WebRTC, has an advanced data recovery mechanism, supports additional codecs (FLAC and future ones), supports B-frames and is less complicated to route.
Media-over-QUIC has a wide range of features and variants, most of them in active development. We currently support the following:
- The server supports
draft-19,draft-18,draft-17anddraft-16of the main specification, and prefersdraft-19when multiple versions are offered during negotiation. - We support using Media-over-QUIC through browsers with the WebTransport API and through native QUIC clients.
- We support the
PUBLISHandSUBSCRIBEmessages only, which are the ones meant to be used with a routing solution like MediaMTX. - We use the MOQT Streaming Format (MSF) to advertise tracks, described in this specification.
- We use the Low Overhead Media Container (LOC) to ship frames, described in this specification.
- We host web pages through a HTTP/2 listener and host the WebTransport endpoint through a HTTP/3 listener. This hybrid setup allows to use self-signed certificates, that are normally forbidden in pure HTTP/3.
There are some server requirements:
- HTTPS is mandatory.
- Clients must be able to access both the HTTP/2 listener (
:8892/TCP) and the HTTP/3 listener (:8892/UDP). - If the server is behind Docker, NAT or a firewall, expose and forward both
8892/TCPand8892/UDPto the server.
And there are some client (browser) requirements:
- If the server certificate is self-signed, browser must support the serverCertificatesHashes option (all except iOS Safari do).
- Browser must support WebTransport and WebCodecs (all modern browsers do)
- When publishing tracks, browser must support MediaStreamTrackProcessor (only Chrome does).
You can publish a stream with Media-over-QUIC and a web browser by visiting:
https://localhost:8892/mystream/publishYou can also publish with native QUIC clients by connecting directly to moqQUICAddress (default is :8893).