logoalt Hacker News

dmmyesterday at 1:00 PM4 repliesview on HN

Pull-based streaming can work with webrtc. I implemented it for my custom ip camera nvr solution. I just open N streams on the client and when one is deactivated (typically by scrolling it out of the viewport), the client sends an unsubscribe message over a separate control channel and the server just stops sending video until they resubscribe.

I'm currently switching to a quic-based solution for other reasons, mainly that webrtc is a giant blackbox which provides very limited control[1], yet requires deep understanding of its implementation[2] and I'm tired[3].

I looked at moq-lite but decided against it for some reason. I think because I have <5 clients and don't need the fanout. The auth strategy is very different than what I currently use too.

[1] Why is firefox now picking that (wrong) ice candidate?

[2] rtp, ice, sdp, etc

[3] webrtc isn't bad for the video conferencing use-case but anything else is a pain


Replies

scottlambyesterday at 1:38 PM

I've also looked at switching my open source IP camera NVR to WebCodecs and WebTransport (maybe MoQ). Two things giving me pause:

* Firefox support for WebCodecs is poor—none at all on Android [1], H.265 is behind a feature flag. [2]

* Mobile Safari doesn't support WebTransport. Or didn't...I just looked it up again and see it does in 26.4 TP. Progress! [3]

[1] https://searchfox.org/firefox-main/rev/da2bfb8bf7dc476186dfe...

[2] https://searchfox.org/firefox-main/rev/da2bfb8bf7dc476186dfe...

[3] https://caniuse.com/webtransport

show 2 replies
Sean-Deryesterday at 3:52 PM

What was the WebRTC bug, would love to help! I saw at work that FireFox doesn't properly implement [0] I wanted to go fix after FFmpeg + WHEP.

If you are still struggling with WebRTC problems would love to help. Pion has a Discord and https://webrtcforthecurious.com helps a bit to understand the underlying stuff, makes it easier to debug.

[0] https://datatracker.ietf.org/doc/html/rfc8445#section-7.2.5....

kixelatedyesterday at 4:06 PM

Absolutely agree.

You can convert any push-based protocol into a pull-based one with a custom protocol to toggle sources on/off. But it's a non-standard solution, and soon enough you have to control the entire stack.

The goal of MoQ is to split WebRTC into 3-4 standard layers for reusability. You can use QUIC for networking, moq-lite/moq-transport for pub/sub, hang/msf for media, etc. Or don't! The composability depends on your use case.

And yeah lemme know if you want some help/advice on your QUIC-based solution. Join the discord and DM @kixelated.