Hacker Newsnew | past | comments | ask | show | jobs | submit | more kixelated's commentslogin

QUIC is a major functionality improvement, while IPv6 is a capacity improvement. You can do some extremely cool things with QUIC that definitely deserves a post of its own.


ABR is absolutely required for distribution. MoQ also supports ABR, but additionally gives you the ability to also drop the tail of a GoP if a rendition switch is too slow, or no lower rendition exists.

As for maintaining existing standards, it depends on your goals. If you're not trying to push boundaries then absolutely, HLS/DASH is great for quickly getting off the ground. But if you're looking for something in-between HLS and WebRTC then MoQ is compelling.


Yeah, if you're using WebRTC only for data channels, then 100% you should switch to WebTransport with all due haste. Once Safari adds support of course.


This is what I profoundly disagree about, and I am referring to native code, not in browsers.

The whole P2P, STUN/TURN/ICE integration has value far beyond just media streaming, especially for large amounts of real time data where the central node doesn't want to be handling the data itself.

There are definite oddities to it but having the P2P setup and negotiation working (and QAed, as pointed out) is huge.


Glad you liked it!

It's really difficult to compare the latency of different protocols because it depends on the network conditions.

If you assume flawless connectivity, then real-time latency is trivial to achieve. Pipe frames over TCP like RTMP and bam, you've done it. It's almost meaningless to compare the best-case latency.

The important part is determining how a protocol behaves during congestion. LL-HLS doesn't do great in that regard; frankly it will perform worse than RTMP if that's our yardstick because of head-of-line blocking, large fragments, and the playlist in the hot path. Twitch uses a fork of HLS called LHLS which should have lower latency, but we were still seeing 3-5s in some parts of the world.

But yeah, P90 matters more than P10 when it comes to latency. One late frame ruins the broth. A real-time protocol needs a plan to avoid queues at all costs and that's just difficult with TCP.


Absolutely!

I'm doing that in my implementation: the main thread immediately transfers each incoming QUIC stream to a WebWorker, which then reads/decodes the container/codec and renders via OffscreenCanvas.

I didn't realize that DataChannels were main thread only. That's good to know!


Eric Kinnear (linked post; Apple) is the author of the HTTP/2 fallback for WebTransport, so it's safe to say that WebTransport will be available in WebKit at some point.


I maintained the Flash video player at Twitch until I couldn't take it any longer and created an HTML5 player. Flash was a mess. :)


is html5 video part of webrtc?


no, they are not related


Thanks for WebCodecs!

I'm still just trying to get A/V sync working properly because WebAudio makes things annoying. WebCodecs itself is great; I love the simplicity.


https://blog.paul.cx/post/audio-video-synchronization-with-t... has some background, https://github.com/w3c/webcodecs/blob/main/samples/lib/web_a... is part of a full example that you can run using web codecs, web audio, audioworklet SharedArrayBuffer, and does A/V sync.

If it doesn't answer your question let me know because I wrote both (and part of the web audio spec, and part of the webcodecs spec).


I'm using AudioWorklet and SharedArrayBuffer. Here's my code: https://github.com/kixelated/moq-js/tree/main/lib/playback/w...

It's just a lot of work to get everything right. It's kind of working, but I removed synchronization because the signaling between the WebWorker and AudioWorklet got too convoluted. It all makes sense; I just wish there was an easier way to emit audio.

While you're here, how difficult would it be to implement echo cancellation? The current demo is uni-directional but we'll need to make it bi-directional for conferencing.


Just use getUserMedia as usual and it will just work, nothing special to do.


Are you referencing this line? > 2x the packets, because libsctp immediately ACKs every “datagram”.

The section is about data channels, which uses SCTP and is ACK-based. Yes, you can use RTP with NACK and/or FEC with the media stack, but not with the data stack.


TCP can coalesce acks for multiple packets, can't SCTP do the same?


The protocol can do it, but libsctp (used by browsers) was not coalescing ACKs. I'm not sure if it has been fixed yet.


SCTP can (and does) a SACK[0] isn't needed for each DATA chunk.

[0] https://datatracker.ietf.org/doc/html/rfc4960#section-3.3.4



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: