awslabs / amazon-kinesis-video-streams-webrtc-sdk-ios

iOS SDK for interfacing with the Amazon Kinesis Video Streams Signaling Service.
Apache License 2.0
66 stars 29 forks source link

How to implement multi-user video calling #74

Closed iOSLR closed 1 year ago

iOSLR commented 1 year ago

When I am testing with three phones, A, B, and C. A is the Master, and B and C are the Viewers.

When there is no C joined, A and B can communicate normally and see each other's video. When C joins, the video of A and B freezes.

Please tell me how to resolve this issue.

sirknightj commented 1 year ago

Current master branch only shows the video of one remote peer. As you can see here and here, the variables holding the remote tracks is only a single variable. You would need to change it to an array or other datastructure to let you keep multiple these objects in memory instead of overwriting them (which is what currently happens), similar to how we did it in the JS sample. Something like this.

Please also see #47. We currently do not have any ETAs for implementing this, though you're more than welcome to submit a PR if you'd like to contribute!

iOSLR commented 1 year ago

Thank you for your response. I want to confirm, do I only need to make changes to the iOS code to implement this feature, or do I need AWS Cloud to already support multi-party video calling?

sirknightj commented 1 year ago

Each signaling channel on Kinesis Video Streams Signaling backend supports 1 master and up to 10 viewers (https://docs.aws.amazon.com/kinesisvideostreams-webrtc-dg/latest/devguide/kvswebrtc-limits.html#limits-signaling-service). You can try this out on the JS test page (https://awslabs.github.io/amazon-kinesis-video-streams-webrtc-sdk-js/examples/index.html).

In the image below, A is on the left and B/C are on the right.

image