SFU routing capabilities/buiness rules

65 views
Skip to first unread message

bma...@gmail.com

unread,
Aug 23, 2018, 8:38:22 AM8/23/18
to OpenVidu
Hi All,

We are currently investing openvidu as base for a custom conferencing solution.
We have a couple of specific requirements regarding the routing of data between endpoints. 

Based solely on my common sense, and my limited understanding of the architecture of web-rtc, is assume that SFU, selective forwarding unit, means that it is possible to selectively forward streams to endpoints, that this happens based on some set of rules, and that these can be customized.

I was hoping someone could shed some light if the following use case would be technically possible, and if this would be possible out of the box, or that it requires modifications/additions to the core SFU. I do understand that for this to be possible some kind of parameter will need to come down form the client to the server to actually  be able to identify and apply these business rules. 

Schermafdruk van 2018-08-23 14-20-00.png

Blue: video stream

Dashed line: websocket for custom data/signaling

Red : Audio stream

Orange: Screencast


User A and B form a pair. User C and D form a pair. It would be possible extra pairs are added to the session (user F and G)


So, 

User A and B share web-cam video bidirectionally, but do not receive any other web-cam video streams from any of the other participants. There is also an additional websocket for custom data

User C and D share web-cam video bidirectionally, but do not receive any other web-cam video streams from any of the other participants. There is also an additional websocket for custom data

Users A, B, C and D share audio bi-directionally
User A and C receive the screen-cast from E, no other users receive this stream.
User E does not contribute any media stream except from the screen-cast, and does not receive any media streams

For every other extra pair of users, the same rules apply: Video + websocket is shared between them, audio is shared with the whole session, one of them receives the screen-cast.
We foresee that the pairs are pre configured in a user database


Looking forward to any insight in this matter.


Regard,
Bart




Micael Gallego

unread,
Aug 25, 2018, 12:55:06 PM8/25/18
to bma...@gmail.com, OpenVidu
You can create this kind of routing using OpenVidu. In OpenVidu, every user in a session can decide to which other videos subscribe. The selection is implemented using JavaScript code in the browser. Just look to sample applications to see how to do that. 

Currently, OpenVidu allows to send data to any other participant in the session. Using this feature, you can simulate websocket connection between pair members. WebSocket connection is already established between participant and OpenVidu server and you can use custom routing logic.

OpenVidu doesn't support out of the box sending several media streams to the videoconference. But you can use a hack to allow it. The hack consist in creating two OpenVidu-browser instances in the browser.. OpenVidu thinks there are 2 users... but the reality is that these 2 users are one real user sending two streams.

Remember that if you need more personalised help, OpenVidu team offers commercial support around OpenVidu.

Best regards

Micael Gallego
Kurento / OpenVidu Project Lead


--
You received this message because you are subscribed to the Google Groups "OpenVidu" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openvidu+u...@googlegroups.com.
To post to this group, send email to open...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openvidu/4e6e9aba-5eea-4955-8d83-3e27bf7a9c78%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Mauricio Altamirano Silva

unread,
Dec 17, 2019, 10:09:44 AM12/17/19
to OpenVidu
Hello;

I was wondering if it is possible to create a tree of open vidu servers, something similar like the unmaintained project of kurento tree (https://github.com/Kurento/kurento-tree).

My use case is that I have distributed users around the world, 2 in America and 2 in Europe, and I would like them to connect to a local vidu server, and then to connect the 2 vidu servers to create a conference call, and reduce the latency taking advantage of the better connection between servers.
Please see the image below.


viduServerTree1.png




The only similar solution that I imagined is to connect a user to 2 vidu servers and  to make it forward the streams from 1 session to the other.

viduFwdNodesTree.png


Thanks and Regards!
Mauricio Altamirano
To unsubscribe from this group and stop receiving emails from it, send an email to open...@googlegroups.com.

Micael Gallego

unread,
Dec 18, 2019, 7:19:35 PM12/18/19
to Mauricio Altamirano Silva, OpenVidu
Hello Mauricio, 

You can implement this topology if you fork OpenVidu project and change project internals. But you can not connect two OpenVidu instances together or let OpenVidu Server to manage several KMSs geographically distributed with modifying internal code.

Remember that OpenVidu team provides commercial support to implement this kind of special features for you.

Best regards

Micael Gallego
Kurento / OpenVidu Project Lead

To unsubscribe from this group and stop receiving emails from it, send an email to openvidu+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openvidu/5efea2d6-3384-4de4-b96c-c67bb561b519%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages