Skip to main content
Background Image
  1. Posts/

Real-Time Audience Voting over Media over QUIC

Nate Burr
Author
Nate Burr
Table of Contents

I’ve always enjoyed the interactivity of live events. A few months back, my wife and I were watching ABC’s Dancing With The Stars and getting frustrated by the lack of transparency with voting and results. In the end, it made for great drama and pulled us back each week. Netflix just launched Star Search, which has a much shorter turnaround and lets members cast votes directly from their TV or device. This is where things are headed. We’ll still have our cliffhangers, but we’re going to see more content where the audience calls the shots. More interactivity and gamification are the future.

I built this demo to show how MOQT can power that kind of experience. While still a young protocol, it has the right pieces to bring about the next era of live video. Both the video stream and the voting data travel over the same MOQT transport. No sidecar WebSockets, no HTTP polling, just one protocol for media and interactivity. I also wanted to show what sub-second latency actually feels like in a real-world scenario.

The demo opens a voting window every 30 seconds, lasting 20 seconds. Votes are submitted over MOQT through a Cloudflare relay to a voting service that controls pacing, accumulates results, and pushes updated tallies back into the broadcast output.

This Demo Requires a Chrome based browser.

The Goal
#

Allow viewers watching a live MOQT stream to cast votes that are reflected in the broadcast output within a fraction of a second. No page reloads, no polling intervals, no separate app. Just click a button and see the results update live on screen for every viewer simultaneously.

How It Works
#

The system bridges two worlds: broadcast-grade ingest on one end and internet-scale delivery on the other, with MOQT as the connective tissue.

  1. Ingest. A professional SMPTE ST2110 source feeds uncompressed video into the pipeline. In this demo, a Blackmagic 2110 IP Converter generates the signal.

  2. Compositing. The video is composited with a Rive motion graphics layer that visualizes vote tallies in real time. When new vote data arrives, the graphics update on the next frame: bar heights, percentages, transitions, all driven by live data.

  3. Delivery. The composited output is encoded into multiple ABR tiers (432p through 1080p) and published over MOQT to a Cloudflare relay for worldwide distribution.

  4. Voting. Viewers cast votes from the player, and those votes travel back over MOQT to a voting service. The service aggregates results and pushes updated state to both the compositor and all connected viewers.

The round trip, from a viewer clicking a button to seeing the result rendered in the broadcast output, is typically under 500 milliseconds. That’s fast enough that voting feels instant, and every viewer sees the same composited result at roughly the same time.

What’s New
#

Since the previous demo:

  • Dedicated SMPTE 2110 source. Moved from a loopback setup to a dedicated Blackmagic 2110 IP Converter for the ST2110 signal. I also added support for their IP10 codec, though this demo uses raw frames.

  • Rive compositing. Built a new compositing layer using Rive. I’ve enjoyed using Rive over the years, and its state machine model is a natural fit as live streams become more event-driven and data-driven.

Why This Matters
#

Most interactive TV experiences today bolt interactivity onto the side: a companion app, a second-screen website, a polling API running on a completely separate stack. The video goes one way, the interaction data goes another, and synchronizing them is an ongoing headache.

MOQT changes that equation. Because it can carry both media and application data natively, the voting in this demo isn’t a bolt-on. It’s part of the stream. Votes and video travel through the same relay infrastructure, and the results are composited directly into the broadcast output before encoding. There’s no player-side overlay to get out of sync. What the broadcaster sees is what every viewer sees.

This is a small demo, but the pattern scales to much more than voting: live predictions, audience-driven camera selection, interactive storytelling, real-time commerce overlays. As MOQT matures, the gap between “watching” and “participating” in live content is going to keep shrinking.

Related

Computational Requirements for ABR Encoding
Over 15+ Years of Streaming