Live data from Hacker News

We replaced H.264 streaming with JPEG screenshots (and it worked better)

blog.helix.ml

31–40 of 332 posts

Re: We replaced H.264 streaming with JPEG screenshots (and it worked better)

#31

> I mashed F5 like a degenerate. I love the style of this blog-post, you can really tell that Luke has been deep down in the rabbit hole, encountered the Balrog and lived to tell the tale.

I like it too, even though it has that distinctive odor of being totally written by chatgpt though. (a bit distracting tbh)

Re: We replaced H.264 streaming with JPEG screenshots (and it worked better)

#33
post #24
post #5

> The constraint that ruined everything: It has to work on enterprise networks. > You know what enterprise networks love? HTTP. HTTPS. Port 443. That’s it. That’s the list. That's not enough. Corporate networks also love to MITM their own workstations and reinterpret http traffic. So, no WebSockets and no Server-Side Events either, because their corporate firewall is a piece of software no one in the world wants and…

Corporate IT needs to die.

I think the general idea/flow of things is "numbers go up, until $bubble explodes, and we built up smaller things from the ground up, making numbers go up, bloating go up, until $bubble explodes..." and then repeat that forever. Seems to be the end result of capitalism.

If you wanna kill corporate IT, you have to kill capitalism first.

Re: We replaced H.264 streaming with JPEG screenshots (and it worked better)

#35
> looks at TCP congestion control literature

> closes tab

Eh, there are a few easy things one can try. Make sure to use a non-ancient kernel on the sender side (to get the necessary features), then enable BBR and NOTSENT_LOWAT (https://blog.cloudflare.com/http-2-prioritization-with-nginx...) to avoid buffering more than what's in-flight and then start dropping websocket frames when the socket says it's full.

Also, with tighter integration with the h264 encoder loop one could tell it which frames weren't sent and account for that in pframe generation. But I guess that wasn't available with that stack.

Re: We replaced H.264 streaming with JPEG screenshots (and it worked better)

#37

The LinkedIn slop tone, random bolding, miscopied Markdown tables makes me invoke: "please read the copy you worked on with AI" smaller thing: many, many, moons ago, I did a lot of work with H.264. "A single H.264 keyframe is 200-500KB." is fantastical. Can't prove it wrong because it will be correct given arbitrary dimensions and encoding settings, but, it's pretty hard to end up with. Just pulled a couple 1080p's o…

at least it had a minimum of Clause. Clause. Punchline.

Re: We replaced H.264 streaming with JPEG screenshots (and it worked better)

#38
Doesn’t matter now, but what led you to TURN?

You can run all WebRTC traffic over a single port. It’s a shame you spent so much time/were frustrated by ICE errors

That’s great you got something better and with less complexity! I do think people push ‘you need UDP and BWE’ a little too zealously. If you have a homogeneous set of clients stuff like RTMP/Websockets seems to serve people well

Re: We replaced H.264 streaming with JPEG screenshots (and it worked better)

#40

> When the network is bad, you get... fewer JPEGs. That’s it. The ones that arrive are perfect. You can have still have weird broken stallouts though. I dunno, this article has some good problem solving but the biggest and mostly untouched issue is that they set the minimum h.264 bandwidth too high. H.264 can do a lot better than JPEG with a lot less bandwidth. But if you lock it at 40Mbps of course it's flaky. Try 1…

> Try 1Mbps and iterate from there.

From the article:

“Just lower the bitrate,” you say. Great idea. Now it’s 10Mbps of blocky garbage that’s still 30 seconds behind.

Post reply on HN