Jibri Not capturing New participants

Hello, I have been experiencing a problem with jibri regarding recording when a new participant joins. I start the recording and a new participant joins and jibri does not record the new participant’s video. This also happens when there are two people in the room and one of them opens its video after the recording starts. From the jibri logs, I saw that MediaStatusCheck does not increment the number of participants in the room. Do you have any idea why would that might happen? Have a great day and Thank you very much.

Can you successfully host a meeting with 3 or more participants (without recording)?

Yes, I can. I don’t have any problem with that part.

Does Jibri render a ninja icon for that participant? Is Jibri on a good network?

Also, share your jibri.conf and jibri logs, those will likely be instructive.

jibri {
    // A unique identifier for this Jibri
    // TODO: eventually this will be required with no default
    id = "jibri-instance-307b2d80fb35"

    api {
        xmpp {
            environments = [
                {
                    // A user-friendly name for this environment
                    name = "<no value>"

                    // A list of XMPP server hosts to which we will connect
                    xmpp-server-hosts = [
                        “mydomain.com"
                    ]

                    // The base XMPP domain
                    xmpp-domain = “mydomain.com"

                    // The MUC we will join to announce our presence for
                    // recording and streaming services
                    control-muc {
                        domain = "internal.auth.mydomain.com"
                        room-name = "JibriBrewery"
                        nickname = "ip-10-0-0-140"

                    }

                    // The login information for the control MUC
                    control-login {
                        domain = "auth.mydomain.com"
                        username = "jibri"
                        password = "jibriauthpass"
                    }

                    // The login information the selenium web client will use
                    call-login {
                        domain = "recorder.mydomain.com"
                        username = "recorder"
                        password = "jibrirecorderpass"
                    }

                    // The value we will strip from the room JID domain to derive
                    // the call URL
                    strip-from-room-domain = "conference."

                    // How long Jibri sessions will be allowed to last before
                    // they are stopped.  A value of 0 allows them to go on
                    // indefinitely
                    usage-timeout = 0
                    // Whether or not we will automatically trust any cert on
                    // this XMPP domain
                    trust-all-xmpp-certs = true
                    }
	    ]
        }
    }
    recording {
        recordings-directory = "/srv/recordings"
        finalize-script = /home/ubuntu/finalize_recording.sh
        }

    stats {
      enable-stats-d = true
    }
    chrome {
        flags = [
            "--use-fake-ui-for-media-stream","--start-maximized","--kiosk","--enabled","--disable-infobars","--autoplay-policy=no-user-gesture-required","--disable-setuid-sandbox","--disable-web-security","--disable-dev-shm-usage","--ignore-certificate-errors","--no-sandbox","--user-agent='Mozilla/5.0 (X11; Linux x86_64) JibriHeadlessChrome AppleWebKit/537.36 (KHTML like Gecko) Chrome/87.0.4280.66 Safari/537.36'"
        ]
    }
    }






2022-09-20 17:42:08.346 INFO: [2354] org.jitsi.jibri.api.xmpp.XmppApi.log() Received JibriIq <iq to='jibri@auth.mydomain.com/OvUk5tcQ' from='jibribrewery@internal.auth.mydomain.com/focus' id='amlicmlAYXV0aC5yb29tLWRhaWx5LjExc2lnaHQuY29tL092VWs1dGNRAEpCRzRGLTUyNjc4AA+9R/TmNbehI+pchiI2m7c=' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' action='start' recording_mode='file' room='qa@conference.Room.mydomain.com' session_id='xkakjnlatuldydsz' app_data='{"file_recording_metadata":{"share":true}}'/></iq> from environment [MucClient id=mydomain.com hostname=mydomain.com]
2022-09-20 17:42:08.346 INFO: [2354] org.jitsi.jibri.api.xmpp.XmppApi.log() Received start request, starting service
2022-09-20 17:42:08.349 INFO: [2354] org.jitsi.jibri.api.xmpp.XmppApi.log() Parsed call url info: CallUrlInfo(baseUrl=https://mydomain.com/Room, callName=qa, urlParams=[])
2022-09-20 17:42:08.350 INFO: [2354] org.jitsi.jibri.JibriManager.log() Starting a file recording with params: FileRecordingRequestParams(callParams=CallParams(callUrlInfo=CallUrlInfo(baseUrl=https://mydomain.com/Room, callName=qa, urlParams=[]), email='', passcode=null, callStatsUsernameOverride=, displayName=), sessionId=xkakjnlatuldydsz, callLoginParams=XmppCredentials(domain=recorder.mydomain.com, port=null, username=recorder, password=*****))
2022-09-20 17:42:08.350 FINE: [2354] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.log() Detected os as OS: LINUX
2022-09-20 17:42:08.798 INFO: [2354] org.openqa.selenium.remote.ProtocolHandshake.createSession() Detected dialect: OSS
2022-09-20 17:42:08.806 INFO: [2354] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() Writing recording to /srv/recordings/xkakjnlatuldydsz, finalize script path /home/ubuntu/finalize_recording.sh
2022-09-20 17:42:08.806 FINE: [2354] org.jitsi.jibri.statsd.JibriStatsDClient.log() Incrementing statsd counter: start:recording
2022-09-20 17:42:08.807 INFO: [2354] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: IDLE -> BUSY
2022-09-20 17:42:08.807 FINE: [2354] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2022-09-20 17:42:08.807 INFO: [2354] org.jitsi.jibri.api.xmpp.XmppApi.log() Jibri reports its status is now JibriStatus(busyStatus=BUSY, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections
2022-09-20 17:42:08.813 INFO: [2354] org.jitsi.jibri.api.xmpp.XmppApi.log() Sending 'pending' response to start IQ
2022-09-20 17:42:08.814 INFO: [2366] org.jitsi.jibri.selenium.pageobjects.HomePage.log() Visiting url https://mydomain.com/Room
2022-09-20 17:42:10.664 INFO: [2366] org.jitsi.jibri.selenium.pageobjects.HomePage.log() Waited 1.85s for driver to load page
2022-09-20 17:42:10.721 INFO: [2366] org.jitsi.jibri.selenium.pageobjects.CallPage.log() Visiting url https://mydomain.com/Room/qa#config.iAmRecorder=true&config.externalConnectUrl=null&config.startWithAudioMuted=true&config.startWithVideoMuted=true&interfaceConfig.APP_NAME="Jibri"&config.analytics.disabled=true&config.p2p.enabled=false&config.prejoinPageEnabled=false&config.requireDisplayName=false
2022-09-20 17:42:11.421 INFO: [2366] org.jitsi.jibri.selenium.pageobjects.CallPage.log() Waited 700ms for driver to load page
2022-09-20 17:42:11.427 FINE: [2366] org.jitsi.jibri.selenium.pageobjects.CallPage.log() Not joined yet: Cannot read properties of undefined (reading 'isJoined')
2022-09-20 17:42:12.499 INFO: [2366] org.jitsi.jibri.selenium.pageobjects.CallPage.log() Waited 1.08s to join the conference
2022-09-20 17:42:12.500 INFO: [2366] org.jitsi.jibri.selenium.status_checks.EmptyCallStatusCheck.log() Starting empty call check with a timeout of PT30S
2022-09-20 17:42:12.506 INFO: [2366] org.jitsi.jibri.selenium.JibriSelenium.log() Transitioning from state Starting up to Running
2022-09-20 17:42:12.506 INFO: [2366] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() Selenium joined the call, starting the capturer
2022-09-20 17:42:12.523 INFO: [2366] org.jitsi.jibri.util.JibriSubprocess.log() Starting ffmpeg with command ffmpeg -y -v info -f x11grab -draw_mouse 0 -r 30 -s 1920x1080 -thread_queue_size 4096 -i :0.0+0,0 -f alsa -thread_queue_size 4096 -i plug:bsnoop -acodec aac -strict -2 -ar 44100 -b:a 128k -af aresample=async=1 -c:v libx264 -preset veryfast -profile:v main -level 3.1 -pix_fmt yuv420p -r 30 -crf 25 -g 60 -tune zerolatency -f mp4 /srv/recordings/xkakjnlatuldydsz/qa_2022-09-20-17-42-08.mp4 ([ffmpeg, -y, -v, info, -f, x11grab, -draw_mouse, 0, -r, 30, -s, 1920x1080, -thread_queue_size, 4096, -i, :0.0+0,0, -f, alsa, -thread_queue_size, 4096, -i, plug:bsnoop, -acodec, aac, -strict, -2, -ar, 44100, -b:a, 128k, -af, aresample=async=1, -c:v, libx264, -preset, veryfast, -profile:v, main, -level, 3.1, -pix_fmt, yuv420p, -r, 30, -crf, 25, -g, 60, -tune, zerolatency, -f, mp4, /srv/recordings/xkakjnlatuldydsz/qa_2022-09-20-17-42-08.mp4])
2022-09-20 17:42:13.641 INFO: [2369] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.log() Ffmpeg capturer transitioning from state Starting up to Running
2022-09-20 17:42:13.641 INFO: [2369] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() File recording service transitioning from state Starting up to Running
2022-09-20 17:42:13.642 INFO: [2369] org.jitsi.jibri.api.xmpp.XmppApi.log() Current service started up successfully, sending on iq <iq to='jibribrewery@internal.auth.mydomain.com/focus' id='77i2x-4519' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' status='on'/></iq>
2022-09-20 17:42:27.561 INFO: [17] org.jitsi.jibri.selenium.status_checks.MediaReceivedStatusCheck.log() Jibri client receive bitrates: {audio={download=0, upload=0}, download=0, upload=0, video={download=0, upload=0}}, num participants: 1, numMutedParticipants: 1, numJigasis: 0, all clients muted? true
2022-09-20 17:42:28.584 FINE: [17] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2022-09-20 17:42:42.527 INFO: [17] org.jitsi.jibri.selenium.status_checks.MediaReceivedStatusCheck.log() Jibri client receive bitrates: {audio={download=0, upload=0}, download=1309, upload=0, video={download=1309, upload=0}}, num participants: 1, numMutedParticipants: 1, numJigasis: 0, all clients muted? true
2022-09-20 17:42:57.533 INFO: [17] org.jitsi.jibri.selenium.status_checks.MediaReceivedStatusCheck.log() Jibri client receive bitrates: {audio={download=0, upload=0}, download=1184, upload=0, video={download=1184, upload=0}}, num participants: 1, numMutedParticipants: 1, numJigasis: 0, all clients muted? true
2022-09-20 17:43:12.529 INFO: [17] org.jitsi.jibri.selenium.status_checks.MediaReceivedStatusCheck.log() Jibri client receive bitrates: {audio={download=0, upload=0}, download=1312, upload=0, video={download=1312, upload=0}}, num participants: 1, numMutedParticipants: 1, numJigasis: 0, all clients muted? true

In this logs, I added a new user after the recording started but in the MediaReceivedStatusCheck num participants did not increase from 1 to 2.

Ninja icon can be seen if the user is already in the meeting when the recording started. However, when the participant open his or her video, jibri does not capture it. I can only see the ninja icon.

If the participants joins the meeting after the recording started, then I don’t even see the new participant’s ninja icon.

Jibri is on a good network. Thank you for your help.

There are some format issues in your jibri.conf. Is this a copy-paste issue or are there really bugs in the original conf?

What is the Chrome version on Jibri?
Why do you set user-agent?

Chrome version is 93.0.4577.82 . It doesn’t work without the user-agent.

It might be a copy-paste issue. Which ones are you referring to? I am able to make recordings

For example double quotes in these lines.

This is very strange. What is your Jitsi version? Is it older than plan-B change?

That is a copy-paste issue. Sorry about that.

Jicofo and Videobridge are on the latest version.

Does Jibri access Jitsi through its public IP address or through a local network?

I have following points to add -

(I) In the attached logs there is no log “Jibri got MUC_MEMBER_JOINED”. It seems Jibri is not receiving “xmpp.muc_member_joined” event. What could be the reason?

(II) MediaReceivedStatusCheck verifies whether Jibri web client is receiving media from the other participants. It handles 2 cases and sends corresponding event of CallEmpty or noMediaReceived.

a) No participant has audio or video enabled (as advertised in signaling). In this case Jibri fire a SeleniumEvent (CallEmpty) after allMutedTimeout- For us this is not the relevant case

b) If some participants have audio and/or video enabled (as advertised in signaling). In this case, if jibri receives no audio or video for [noMediaTimeout] it will fire a SeleniumEvent(NoMediaReceived).

numParticipants (Total number of participants) are being fetched from APP.conference.membersCount. I do not find where memberCount is being updated in Jibri. It seems that this is not getting updated.

However to find muted participants or jigasi participants APP.conference._room.getParticipants() is being called which in turn provides window._jibriParticipants.

Also the new participant listener “xmpp.muc_member_joined” is finally updating window._jibriParticipants.

Is usage of APP.conference.membersCount to fetch Total Number of Participants correct?

Please add your opinion on these points? Thank you

Jibri is accessing Jitsi through public IP

Chrome 93 is very old, I’d start by using the latest stable version, and removing the forced UA string.

So I tried the update. I used Chrome 103 and Chromedriver 103 with the latest Jibri version. When I remove the UA string I get this error and the recordings don’t start.

Not joined yet: Cannot read properties of undefined (reading ‘isJoined’)

What are Jibri and Java versions?