Hacker News new | ask | show | jobs
by SeeDave 2202 days ago
I was pretty unimpressed by Zoom as I used to think along the lines of "bro just open up a WebRTC connection. You can use socket.io it's super simple"

Then... I attended a "Zoom Nightclub" and saw over 200 attendees streaming video to one another. All encryption, routed through China, etc. issues aside; I was very very impressed.

3 comments

I don't think zoom is p2p. It just routes through a media server. So the media server merges all streams and distributes it.
That's their point. P2P doesn't scale to 100s of people. For even more than 10 you need a server. One service I've used forever is whereby.com (used to be appear.in) but even they acquiesced with their professional option for more than 4 people to ditching pure P2P using WebRTC.
Naive P2P doesn't scale like that. You'd have to do something much more advanced like a tree based multicast algorithm. That's hard to get right. Seems like the engineering there is more expensive than just paying for a ton of bandwidth and doing a simple centralized aggregator.

Of course there could also be a surveillance motive.

We have experimented with a P2P multicast setup and WebRTC makes this very difficult to do. Ultimately what we’re rolling out soon, and what others like Zoom have done, is to send media over WebRTC data channels. The media channels are amazing if you’re building a demo project, but for anything serious the spec does not allow enough low level control.

Also latency in P2P multicast starts to become a real problem.

How do you decode video from a data channel?

Getting encoded video bytes from a buffer onto the screen while using hardware video decoding and without a multi-second lag I haven't been able to do in either safari or chrome - any tips?

wasm ffmpeg -> canvas

Granted, not tested on Safari

Also a privacy issue. If your app reveals the IP of other users, it will lead to "interesting" effects like someone DoSing the home internet connection of a presenter whose stream they want to disrupt.
That's such a flaw in the Internet's architecture. IP was never designed for such a hostile environment.
DoS could be handled by stateful multicast firewalls, yes?
Latency is also a factor in a tree based algo.
You could just use WebRTC with a selective forwarding unit.
Zoom can supposedly handle up to 1000 people video calls.