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?
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?
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
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.