Videoroom subscribers and simulcast relay

Is it theoretically possible to relay all substreams to videoroom webrtc subscribers?

We had implemented our server/server publishing schema with republishing subscriber webrtc to remote janus server before remote publishers were added to janus, so it is very hard now to switch to the new schema. But we have a problem with simulcast between servers isn’t working now and we use client-side configure calls to switch between mids of publishers from other servers to obtain desired quality on layout changes.
We also integrated with some external systems, which accepts simulcast publishing via webrtc, which isn’t compatible with remote publishers of janus now afaik.

I looked into code and rtp relay bases on current simulcast context of subscriber in janus_rtp_simulcasting_context_process_rtp function. What if I’ll add relay_all flag on subscriber and always relay all packets to subscriber? I also see magic with payload descriptors happens in janus_vp8_simulcast_descriptor_update before relay(this might be a problem with relay_all approach? I need to set it for each subscriber and substream individually or relay it as i?).

Is it my idea with relay_all flag would work or not? Any hidden complexities in such approach?

I appreciate any advices. Thank you

RTP forwarders already support relaying all substreams, rather than a single one. If you mean sending all substreams to a regular subscriber, that would completely break browsers, so we’re not going to do that.

I mean to send all substreams to subscriber which set some flag “relay_all” on subscribe request. So we won’t send all substreams to regular subscriber, only to subscriber with this flag.
Is it possible to set rtp forwarder as a regular publisher to janus?

That’s what the new remote publishers functionality in the VideoRoom does, so I encourage you to start looking into that instead.

@lorenzo does the remote publishers support encryption?

Not at the moment, no.

do you have any plans to support it? In our case januses are not in the same network and route of rtp lies through internet - different customers with their own infrastructures and server2server webrtc calls

I implemented it myself, I’ll test it on our environment and later make a pull request with it.

I’m not sure this implementation would work at all :frowning:

SRTP for remote publishers in video rooms - #3 by architt found this one, so srtp wouldn’t work in my implementation since all rtp streams multiplexed on the same port.

Remote publishers doesn’t fit in our scenario since it doesn’t support SRTP. So question in first post is actual. Couldn’t we just support subscribers with special flag ‘relay_all’ set, to send all substreams? As browser does when publishes simulcast?

That’s already how simulcast works when using remote publishers. We relay all substreams as separate SSRCs, using a custom math to map them to the related m-line. I think you should be able to have a single SRTP context per remote publisher/recipient, since all streams go on the same port but have different SSRCs.

1 Like