ianramzy / decentralized-video-chat

🚀 Zipcall- Acquired @ 250k users 🚀 Peer to peer browser video calling platform with unmatched video quality and latency.
https://zipcall.io
3.31k stars 502 forks source link

Add group video calling #3

Open blacklightpy opened 4 years ago

blacklightpy commented 4 years ago

Seems like only two users can join at a time while the others have to wait

Anil-matcha commented 4 years ago

Group video calling would either need all the users sending video feed to every other user which bottles up the bandwith or you would need an SFU in between which costs money so the feature can't be provided for free ideally. Although a group of at max 4 users using only p2p should be possible

ianramzy commented 4 years ago

I am experimenting with having a single beacon server, but that's very expensive and I'm a college student so I don't know if I will do that. I am looking into other ways to do it P2P as well. I think for small groups <4 P2P should be possible. https://testrtc.com/different-multiparty-video-conferencing/

captainhook commented 4 years ago

With regards to the single beacon server, I am happy to provide a Linux box on Azure for you to experiment with if you'd like?

ianramzy commented 4 years ago

Yeah that would be great! @captainhook

ianramzy commented 4 years ago

If someone also wants to make a branch to experiment with 4 people p2p calling I would be super grateful!

captainhook commented 4 years ago

Yeah that would be great! @captainhook

I have emailed you :)

OrlandoCo commented 4 years ago

Making a SFU server it's not a trivial task, perhaps you can use some open source projects like janus or mediasoup and make docker images for easy installation and integration. Also you can add a turn server in the image, since turn server it's not free.

You maybe will find easy to implement mediasoup since use Nodejs/Javascript

unruledboy commented 4 years ago

How about a one side video push (by the host person) and all the participants are just subscribers of the that video feed, it’s like a live video broadcasting, but viewers can chat and do all sorts of actions.

OrlandoCo commented 4 years ago

How about a one side video push (by the host person) and all the participants are just subscribers of the that video feed, it’s like a live video broadcasting, but viewers can chat and do all sorts of actions.

In a one to many scenario, if one of the users it's on a poor network and can't handle the bitrate, it's going to affect all the users, because the host will try to adjust to the worst case scenario. Also since webRTC it's a full MESH topology the host will upload N videos.

So a SFU server it's still required and it must support multicast/SVC for better quality.

husseinraoouf commented 4 years ago

if you added an SFU server what would be different than a project like jitsi

unruledboy commented 4 years ago

@husseinraoouf jitsi does not work on mobile browsers, just ,tested with chrome & safari in iPhone, but this project does work with Safari in iPhone

Chaphasilor commented 4 years ago

mediasoup actually looks promising, although I'm not quite sure how to integrate this with a STUN server yet. This would also result in additional costs for hosting and remove peer-to-peer connections.

Because of this, for a group of 3-4 people we should probably rather use a mesh topology in order to keep this peer-to-peer whenever possible.

ianramzy commented 4 years ago

There are a number of GitHub repos I am currently exploring about this: https://github.com/tom-james-watson/p2p.chat https://github.com/muaz-khan/WebRTC-Experiment/tree/master/video-conferencing

ianramzy commented 4 years ago

https://github.com/peer-calls/peer-calls

ianramzy commented 4 years ago

Okay I have done more research and for group calling we dont need to worry about making a SFU server yet.That would give better performance, but at the cost of scalability and server costs

I think a basic p2p mesh configuration would be able to handle up to 4 people in a call with minimal problems