Participant inputs - RTMP stream from a source like OBS

Hey Everyone,

I am working on a project that requires allowing a participant to “share” their stream. For example, if a participant joins a Jistsi meeting, the user may share their screen normally. I would like to allow them to have an endpoint with a stream key that will allow them to introduce their own output from something like OBS.

In short. Does Jitsi Meet and Jibri support stream inputs such as inbound rtmp stream? If not, is there somewhere in the code base someone could direct me to begin digging to see if I could make this happen? I would ultimately like to link the inbound stream to a participant and share it as their video feed. I would also like to do this direct into the server versus using a fake webcam redirect.

I appreciate everyone’s input. Thanks.

1 Like

There is no such option at the moment. The only shot you have I think is jibri. Currently jibri has 2 modes recording/live-streaming and the other one is sipgw where it uses pjsua to create a sip-video call.
If you replace the pjsua with some command-line tool that can listen for rtp stream, has same exitcodes(as those expected by pjsua) and exits when the stream stops you can use that, you can start it in this mode by doing an http request to jibri.

Hey!

Thank you for getting back to me. Your solution sounds intriguing. Ill have to look deeper into how pjsua operates and see if we can write the utility or something already exists.

this is the tool we used for doing command line sip calls, you need something similar for your goal, just a command line tool to receive rtmp stream and open it in a window and render it.

I found a few tools in python i feel i can use. My next question would be how to associate it a participant and show it as there video or presentation. Hmm.

There is no way to associate it with a participant at the moment, you may want to add some changes in jitsi-meet that will pass some app data so jibri can set its display name … so it will be the same as the one initiating the call … you need to come up with a new flow which can touch a lot of places …

Gotcha.

That seems a little involved but not bad.