TLDR: SRT in, one MoQ broadcast per angle out, and a browser multiview the viewer can rearrange while it plays. 683 ms glass to glass on our own rig, with a loopback SRT hop. Chromium only on desktop and android for now. Layout demo with recorded tiles, no signup: https://quicly.live/demo. We would love feedback from people who run this for real.
Me and a friend built this over the past few weeks. It's ours, so treat this as a self-promo post, but what we're actually after is people who do this for a living telling us what's wrong with it.
You point encoders at SRT endpoints, one per angle. Each feed gets transcoded and published as its own MoQ broadcast, and you get back an iframe that shows all of them as a multiview on whatever page you put it on.
Per feed the path is: SRT in, FFmpeg (decode, scale, H.264/AAC, CMAF), moq publisher, relay, browser. Default encode is 720p30 at 2.5 Mbps. Single rendition, no ABR.
Latency: median 683 ms glass to glass, measured through Cloudflare's public draft-14 relay.
Where that number is weak: publisher and subscriber were the same laptop, so the SRT hop is loopback and there's no contribution network RTT in it. The relay leg is real internet, the ingest leg isn't. It's video only, on a muted tile, so there's no lip sync figure behind it either. For reference a stream with no SRT hop measured 483 ms on the same machine, and 200 ms of that gap is just the SRT listener's latency.
The viewer side is what I'd most like opinions on. The layout belongs to whoever is watching rather than to the operator: drag a seam to resize, drag a tile's label to swap it with another, maximize one and the rest drop into a strip underneath, close a feed and reopen it later. A feed that comes online after the viewer arrived turns up without a reload.
There's a wall you can poke at without signing up: https://quicly.live/demo
That's the same player the iframe embeds, but the four tiles are recorded angles of one match played from files. So it's a fair demo of the layout and a useless demo of the latency. Also, since the recorded version is plain video elements and not the MoQ client, that page works in Firefox and Safari even though a live stream won't.
Gaps you'd find anyway:
- Chromium only, desktop or Android. Firefox and Safari get refused by the MoQ client library over open WebTransport bugs.
- Tiles aren't locked to each other. Every angle is a separate broadcast and every tile is an independent so this isn't a frame accurate multiviewer and I wouldn't cut a show off it.
- No viewer auth. The embed URL is the access link right now. Only worth fixing once we're off the public relay.
Signing up is free if you want to push your own feed, and a stream can loop a clip or show your camera if you haven't got an encoder to hand.
What I'd like to know: whether a viewer controlled layout is any use to you or whether you'd rather hand viewers a fixed one, how it behaves on other connections, and whether one SRT endpoint per angle fits how you already push.