this post was submitted on 13 Jun 2024
606 points (96.5% liked)
Technology
59219 readers
3145 users here now
This is a most excellent place for technology news and articles.
Our Rules
- Follow the lemmy.world rules.
- Only tech related content.
- Be excellent to each another!
- Mod approved content bots can post up to 10 articles per day.
- Threads asking for personal tech support may be deleted.
- Politics threads may be removed.
- No memes allowed as posts, OK to post as comments.
- Only approved bots from the list below, to ask if your bot can be added please contact us.
- Check for duplicates before posting, duplicates may be removed
Approved Bots
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
The main limitation is the 1 gigabit network. It can push out 260 3megabit streams or 50 15megabit streams at the most.
That's already an enormous amount of concurrent viewers that covers 99% of content on youtube.
To achieve this, you can't be wasting processing power anywhere, a straight copy to network from pre encoded files, no live transcoding.
No scripting, no encryption either. If you really need that, which you almost certainly don't, then install a recerse proxy on your openwrt router.
Now, if you want to scale, which almost no video really needs, then you'll send the client a script. The client is a source of inifinite scaling, compute and bandwidth.
Each client just needs to rebroadcast two streams of the file.
As excess clients connect, you tell them to get the stream from the stun/turn server. This punches through both sides of the nat. And puts two clients in communication. First client sends its copies of the received stream chunks, with preference from the beginning of the file. One client can get the stream from multiple other client and once it has a few stream chunks in the cache it can serve them to new clients.
It doesn't take many doublings before you have more bandwidth than the whole internet. All the logic for organisation, hash checking, stream block ordering etc etc is a small text file from the server, signed by the server's certificate. It runs entirely inside the client's browser.