Stream to any OR Multiple RTMP Destinations + Record Simultaneously

Thanks masteryoda , for your excellent idea of achieve FB live through script

I able to solve the problem and now can stream directly to Facebook live without Apache and Stunnel given that ffmpeg support rtmps: protocol. This script check stream key and if stream is of pattern of Facebook Live then stream to Facebook Live else stream to YouTube

below script served the purpose
++++++++
#!/bin/bash

COMANDO="/usr/local/bin/ffmpeg"
while test $# -gt 0
do
T="1" if [ "{1:0:32}" == “rtmp://a.rtmp.youtube.com/live2/” ]; then
# T will contain the rtmp key from jitsi meet page.
streamkey=${T:32}
if [[ $streamkey == “s_sc=” ]]; then
COMANDO="COMANDO rtmps://live-api-s.facebook.com:443/rtmp/{T:32}"
else
COMANDO="$COMANDO $T"
fi
else
COMANDO="$COMANDO $T"
fi
shift
done
echo “$COMANDO”>>/tmp/logs
exec COMANDO PROCESS_FFMPEG=!
wait $PROCESS_FFMPEG
$COMANDO
+++++++++++++++++++

Just make sure ffmpeg support rtmps: protocol.

ffmpeg -protocols|grep rtmps

Note: This only stream to Facebook live or Youtube , not any other platform

I think You can make it stream to both…

Just drop the key that put in popup window and use permanent keys in the script & see if that works

Yes right, but my requirement was to either stream to Facebook or YouTube, and stream key need to be provided in each conference.

Thanks

worked like a charm, thanks alot !!

@masteryoda

would it work right if i want to serve RTMP stream over a client in a local environment.

means, if i have a rtmp server running locally on the same vm/machine as jibri, would i just give the rmtp url as 127.0.0.1/stream or something like that?

would it reduce the load of sending out to another rtmp server and instead self-host the server? as you can, please share your thoughts on this.

yes, that should work. you need nginx on jibri though

1 Like

Yes, works like a charm. I have Jibri and this installed on a 4core/16GB GCP instance with a static ffmpeg build (4.2.2) and it’s working well. The only issue is that stopping the live stream doesn’t stop the live event on Vimeo automatically.

1 Like

i dont know about vimeo. YT (you have to enable auto-stop) periscope and facebook (again enable auto-stop) does stop automatically though when you stop streaming

OK - I figured it out - there’s a 5-minute time-out window after the stream stops before it auto-stops… Thanks for the solution - it solves a lot of problems without having to hack the code!

1 Like

When i am trying with facebook i did not succeed to go live
2020-05-30T13:28:21.767Z [modules/connectivity/ParticipantConnectionStatus.js] <S.onTrackRtcMuted>: No participant for id: 76a39186
s @ md5.js:1
onTrackRtcMuted @ lib-jitsi-meet.min.js?v=4127:1
a.emit @ lib-jitsi-meet.min.js?v=4127:1
_onTrackMute @ md5.js:1
(anonymous) @ md5.js:1
Logger.js:154 2020-05-30T13:28:36.858Z [JitsiMeetJS.js] <Object.getGlobalOnErrorHandler>: UnhandledError: null Script: null Line: null Column: null StackTrace: Error: Jingle error: {“reason”:“timeout”,“session”:“JingleSessionPC[p2p=true,initiator=true,sid=c4f27d3a7578]”}
at JingleSessionPC.js:2328
at I.TimedHandler.handler (strophe.umd.js:2732)
at I.TimedHandler.run (strophe.umd.js:1938)
at I.Connection._onIdle (strophe.umd.js:3869)
at strophe.umd.js:3886
s @ md5.js:1
getGlobalOnErrorHandler @ async.js:1
window.onerror @ app.bundle.min.js?v=4127:1
callErrorHandler @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
run @ lib-jitsi-meet.min.js?v=4127:1
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
Logger.js:154 2020-05-30T13:28:36.860Z [modules/xmpp/JingleSessionPC.js] “session-initiate” error null
s @ md5.js:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
run @ lib-jitsi-meet.min.js?v=4127:1
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
Logger.js:154 2020-05-30T13:28:36.962Z [JitsiMeetJS.js] <Object.getGlobalOnErrorHandler>: UnhandledError: null Script: null Line: null Column: null StackTrace: Error: Jingle error: {“reason”:“timeout”,“session”:“JingleSessionPC[p2p=true,initiator=true,sid=c4f27d3a7578]”}
at JingleSessionPC.js:2328
at I.TimedHandler.handler (strophe.umd.js:2732)
at I.TimedHandler.run (strophe.umd.js:1938)
at I.Connection._onIdle (strophe.umd.js:3869)
at strophe.umd.js:3886
s @ md5.js:1
getGlobalOnErrorHandler @ async.js:1
window.onerror @ app.bundle.min.js?v=4127:1
callErrorHandler @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
run @ lib-jitsi-meet.min.js?v=4127:1
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
Logger.js:154 2020-05-30T13:28:38.001Z [JitsiMeetJS.js] <Object.getGlobalOnErrorHandler>: UnhandledError: null Script: null Line: null Column: null StackTrace: Error: Jingle error: {“reason”:“timeout”,“session”:“JingleSessionPC[p2p=true,initiator=true,sid=c4f27d3a7578]”}
at JingleSessionPC.js:2328
at I.TimedHandler.handler (strophe.umd.js:2732)
at I.TimedHandler.run (strophe.umd.js:1938)
at I.Connection._onIdle (strophe.umd.js:3869)
at strophe.umd.js:3886
s @ md5.js:1
getGlobalOnErrorHandler @ async.js:1
window.onerror @ app.bundle.min.js?v=4127:1
callErrorHandler @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
run @ lib-jitsi-meet.min.js?v=4127:1
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1
setTimeout (async)
_onIdle @ lib-jitsi-meet.min.js?v=4127:1
(anonymous) @ lib-jitsi-meet.min.js?v=4127:1

Facebook uses rtmps NOT rtmp

Check the protocol

see i have used rtmps

Logger.js:154 2020-05-30T18:26:31.603Z [JitsiMeetJS.js] <Object.getGlobalOnErrorHandler>: UnhandledError: null Script: null Line: null Column: null StackTrace: Error: TPC[1,p2p:false]: no peer media info available for 618ae226 at A._remoteTrackAdded (TraceablePeerConnection.js:783) at A._remoteStreamAdded (TraceablePeerConnection.js:660) at RTCPeerConnection.A.m.a.usesPlanB.peerconnection.onaddstream (TraceablePeerConnection.js:277)

s @ md5.js:1
getGlobalOnErrorHandler @ async.js:1
window.onerror @ app.bundle.min.js?v=4127:sourcemap:1
callErrorHandler @ lib-jitsi-meet.min.js?v=4127:1
A._remoteTrackAdded @ md5.js:1
A._remoteStreamAdded @ md5.js:1
A.m.a.usesPlanB.peerconnection.onaddstream @ md5.js:1

can you please tell me what version of Ubuntu, java & ffmpeg you are running?

also try running this command on the jibri server & see if you can see the stream

ffmpeg -f lavfi -re -i "life=s=300x200:mold=10:r=25:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16" -f lavfi -re -i sine=frequency=1000:sample_rate=44100 -pix_fmt yuv420p -c:v libx264 -b:v 1000k -g 30 -keyint_min 120 -profile:v baseline -preset veryfast -c:a aac -b:a 96k  -f flv "rtmps://live-api-s.facebook.com:443/rtmp/{YOUR STREAM KEY}"

i think the issue is your command … i dont use it the way you do, but change the 2nd /rtmps to /rtmp in the command line. that could also be the issue