englishm

Joined 12 years ago

Karma
457
Submissions
69
Member since
Sep 17
circa

RC S2'23.

Working on Media over QUIC (MoQ) in Rust (now at Cloudflare)

https://www.linkedin.com/in/miketenglish/ https://hachyderm.io/@englishm

[ my public key: https://keybase.io/englishm; my proof: https://keybase.io/englishm/sigs/5mYa_n6NgrwOgRhZaCRUYQen9SrDRcqWI8udtL3RmxY ]

View on Hacker News

Recent submissions

Comment · 3 months ago
TL;DR:

- API for self-service MoQ relay provisioning.

- simple scope-granularity rw/ro auth (plans for more advanced auth as standards mature).

- globally deployed draft-16 support (draft-18 work already underway).

- SUBSCRIBE_NAMESPACE + PUBLISH support

(this is my team/product)

Comment · 1 year ago
Yes, you certainly could use MoQ to send multiple streams (WebRTC simulcast style).

There are implementations of traditional receiver-side adaptive bitrate switching with MoQ already today (mostly switching between tracks at group boundaries). There has been interest in exploring sender-side adaptation as well, but it's not clear what that might require and if it's something worth trying to support in the first version of the spec we take all the way to RFC status. Subgroups are something that can be used today, though less experimentation (at least public experimentation) has been done on fully utilizing subgroups at this point. They could be used for independently decodable tracks, though that wastes bandwidth relative to layered codecs. Even layered codecs have some overhead that may not always be worth it. If RTT is low enough and switching is straightforward, it may be that having the original publisher publish multiple tracks into a relay and allowing the end subscriber to switch between them is sufficient.

We could really use more public experimentation with all of these approaches, so if anyone is looking to do that type of research, definitely let us know how we can help support it!

Comment · 1 year ago
Yes, Safari's WebTransport implementation is still a work in progress.
Comment · 1 year ago
Safari is still working to add full support for WebTransport.
Comment · 1 year ago
Comment · 1 year ago
I plan to cover more of the internal implementation details at a future date, possibly at a conference this fall..

But I can at least say that we use anycast to route to a network-proximal colo.

Comment · 1 year ago
Looks like it might be a happy eyeballs issue? I'll pass it along to folks who would know more about what that might be, thanks.
Comment · 1 year ago
Thank you dang!
Comment · 1 year ago
Synchronized playback is usually primarily a player responsibility, not something you should (solely) rely on your transport to provide. We have had some talk about extensions to allow for synchronizing multiple tracks by group boundaries at each hop through a relay system, but it's not clear if that's really needed yet.

Essentially though, there are typically some small jitter buffers at the receiver and the player knows how draw from those buffers, syncing audio and video. Someone who works more on the player side could probably go into a lot more interesting detail about approaches to doing that, especially at low latencies. I know it can also get complicated with hardware details of how long it takes an audio sample vs. a video frame to actually be reproduced once the application sinks it into the playback queue.

Comment · 1 year ago
QUIC is already quite widely used! We see close to 10% of HTTP requests using HTTP/3: https://radar.cloudflare.com/adoption-and-usage

As for the NAT problem, that's mainly an issue for peer-to-peer scenarios. If you have a publicly addressable server at one end, you don't need all of the complications of a full ICE stack, even for WebRTC. For cases where you do need TURN (e.g. for WebRTC with clients that may be on networks where UDP is completely blocked), you can use hosted services, see https://iceperf.com/ for some options.

And as for MoQ - the main thing it requires from browsers is a WebTransport implementation. Chrome and Firefox already have support and Safari has started shipping an early version behind a feature flag. To make everything "just work" we'll need to finish some "streaming format" standards, but the good news is that you don't need to wait for that to be standardized if you control the original publisher and the end subscriber - you can make up your own and the fan out infrastructure in the middle (like the MoQ relay network we've deployed) doesn't care at all what you do at that layer.

Comment · 1 year ago
Comment · 1 year ago
Yes, exactly! I mention that in the post. Streaming formats are where a lot of interesting decisions can be made about how best to optimize QoE for different use cases. MoQT is designed have enough levers to pull to enable a lot of clever tricks across a wide gamut of latency targets, while also being decoupled from all of the media details so we can get good economies of scale sharing fan out infrastructure.

WARP's development (at the IETF) up until now has been largely spearheaded by Will Law, but it's an IETF spec so anyone can participate in the working group and help shape what the final standard looks like. WARP is a streaming format designed mainly for live streaming use cases, and builds on a lot of experience with other standards like DASH. If that doesn't fit your use case, you can also develop your own streaming format, and if it's something you think others could benefit from, too, you could bring it to the IETF to standardize.

Comment · 1 year ago
(OP of the Cloudflare blog & submission here) I think kixelated is saying enough stuff beyond our post that he deserves the credit for and this shouldn't be treated as a dupe. (emailed to say as much also)

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton