"re-encoder" server side / keyFrameRequestDelay 5s

Hi, Just spent the weekend contemplating migrating a project from Janus to MediaSoup. I read through the docs, and watched the JanusCon presentation. Love how well though out MediaSoup is. Congrats! Great work!
My first task is to create a large few-to-many broadcast that scales beyond a single host. I’ve read through the scalability section, especially the “Red” section https://mediasoup.org/documentation/v3/scalability/
I have 2 question that I am hoping somebody here can answer:

  1. has the server side “re-encoder” been written??? if so, is it available somewhere?
  2. I am already used to having upto 5 seconds of “black screen” by shielding the presenter with a max PLI rate of 5s. This is acceptable for my use case. Does keyFrameRequestDelay work for this?

There is no a “promised reencoder that we will write”. However you can use libmediasoupclient C++ library for that.


Hi guys. I will also need to implement such an re encoder. But it this point the documentation really falls short. Leaving you at a point where one does not know how to go further. What is this re encoder? Hiw can it be implemented? I have no freaking idea…

Initially you say you need such a re encoder. Then you go on and ask:

So you need it although you don’t know what it is?!

Do re-check the documentation. It’s very clear IMHO what it is and how you COULD implement such a reencoder.

As far as i understand this re encoder is somewhere beteween the producer and consumer and has to regenerate keyFrames as requested by the client. It is then itself a consumer and produce? What does it has to do with tge c++ lib? Do i have ti write my own video encoder in c++ to get this thing running?

What does it has to do with the c++ lib?

You will need to write your own process but you can do so with the help of the given library. Mediasoup documents well but for these purposes they’re left in the developers hands to create what it is they exactly want. There’s no pre-mades outside the demo’s.

The reencoder is or maybe a libmediasoupclient based app that consumes a track from a real client (via webrtcTransport.consume() in mediasoup server), gets the consumer.track and passes it to webrtcTransport.produce() and injects it back in mediasoup for real clients to consume it, so it’s decoding and encoding again. It may even consume VP8 and reencode it using H264 or whatever.