Yet another jibri config question

Hey folks,

I installed Jitsi a couple of days ago on my server and I love it!

Now I tried to get Jibri up and running on a second server. I followed the git instruction for jibri and the official Youtube tutorial video. Now I’m kind of stuck. Every time I try to start a recording, I get the “Start recording” overlay and the “recording is prepared” overlay, but then, 30 secs later I get a “recording has stopped” voice message.The message in the jibri log is

SEVERE: [188] org.jitsi.jibri.selenium.pageobjects.CallPage.visit() Timed out waiting for call page to load

I guess, something’s wrong with my config, although I triple-checked all bit’s and pieces to look similar to the manuals. Find below an excerpt from my jibri log file covering my last recording attempt.

I hope, somebody can help?

Best, Matthias

2020-03-26 21:40:12.420 INFO: [178] org.jitsi.jibri.api.xmpp.XmppApi.handleJibriIq() Received JibriIq <iq to='jibri@auth.meet.jugendrecht.org/613d9109-3c55-4ad8-b22a-39ec4955c8ac' from='jibribrewery@internal.auth.meet.jugendrecht.org/focus' id='amlicmlAYXV0aC5tZWV0Lmp1Z2VuZHJlY2h0Lm9yZy82MTNkOTEwOS0zYzU1LTRhZDgtYjIyYS0zOWVjNDk1NWM4YWMANGZxSDQtMjIwAGRxddxyyBGmZq07BBMApGo=' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' action='start' recording_mode='file' room='sweetlemurssharepainfully@conference.meet.jugendrecht.org' session_id='jabfrosboxztwhni' app_data='{"file_recording_metadata":{"share":true}}'/></iq> from environment [MucClient id=meet.jugendrecht.org hostname=meet.jugendrecht.org]

2020-03-26 21:40:12.421 INFO: [178] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Received start request
2020-03-26 21:40:12.421 INFO: [178] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Sending ‘pending’ response to start IQ
2020-03-26 21:40:12.422 INFO: [179] org.jitsi.jibri.api.xmpp.XmppApi.run() Starting service
2020-03-26 21:40:12.461 INFO: [179] org.jitsi.jibri.api.xmpp.XmppApi.handleStartService() Parsed call url info: CallUrlInfo(baseUrl=https://meet.jugendrecht.org, callName=sweetlemurssharepainfully, urlParams=)
2020-03-26 21:40:12.461 INFO: [179] org.jitsi.jibri.JibriManager.startFileRecording() Starting a file recording with params: FileRecordingRequestParams(callParams=CallParams(callUrlInfo=CallUrlInfo(baseUrl=https://meet.jugendrecht.org, callName=sweetlemurssharepainfully, urlParams=)), sessionId=jabfrosboxztwhni, callLoginParams=XmppCredentials(domain=recorder.meet.jugendrecht.org, username=recorder, password=jibrirecorderpass)) finalize script path: /path/to/finalize_recording.sh and recordings directory: /srv/recordings
2020-03-26 21:40:12.981 INFO: [179] org.openqa.selenium.remote.ProtocolHandshake.createSession() Detected dialect: OSS
2020-03-26 21:40:12.986 INFO: [179] org.jitsi.jibri.selenium.JibriSelenium.() Starting empty call check with a timeout of PT30S
2020-03-26 21:40:12.987 FINE: [179] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.() Detected os as OS: LINUX
2020-03-26 21:40:12.987 INFO: [179] org.jitsi.jibri.service.impl.FileRecordingJibriService.() Writing recording to /srv/recordings/jabfrosboxztwhni
2020-03-26 21:40:12.987 FINE: [179] org.jitsi.jibri.statsd.JibriStatsDClient.incrementCounter() Incrementing statsd counter: start:recording
2020-03-26 21:40:12.988 INFO: [179] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: IDLE -> BUSY
2020-03-26 21:40:12.988 INFO: [179] org.jitsi.jibri.api.xmpp.XmppApi.updatePresence() Jibri reports its status is now JibriStatus(busyStatus=BUSY, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections
2020-03-26 21:40:12.988 INFO: [179] org.jitsi.xmpp.mucclient.MucClientManager.log() Setting a presence extension: org.jitsi.xmpp.extensions.jibri.JibriStatusPacketExt@18c35151
2020-03-26 21:40:13.811 FINE: [188] org.jitsi.jibri.selenium.pageobjects.CallPage.visit() Visiting url https://meet.jugendrecht.org/sweetlemurssharepainfully#config.iAmRecorder=true&config.externalConnectUrl=null&config.startWithAudioMuted=true&config.startWithVideoMuted=true&interfaceConfig.APP_NAME=“Jibri”&config.analytics.disabled=true&config.p2p.enabled=false
2020-03-26 21:40:44.460 SEVERE: [188] org.jitsi.jibri.selenium.pageobjects.CallPage.visit() Timed out waiting for call page to load
2020-03-26 21:40:44.461 INFO: [188] org.jitsi.jibri.selenium.JibriSelenium.onSeleniumStateChange() Transitioning from state Starting up to Error: SESSION Failed to join call
2020-03-26 21:40:44.462 INFO: [188] org.jitsi.jibri.service.impl.FileRecordingJibriService.onServiceStateChange() File recording service transitioning from state Starting up to Error: SESSION Failed to join call
2020-03-26 21:40:44.462 INFO: [188] org.jitsi.jibri.api.xmpp.XmppApi.invoke() Current service had an error, sending error iq
2020-03-26 21:40:44.463 FINE: [188] org.jitsi.jibri.statsd.JibriStatsDClient.incrementCounter() Incrementing statsd counter: stop:recording
2020-03-26 21:40:44.465 INFO: [188] org.jitsi.jibri.JibriManager.stopService() Stopping the current service
2020-03-26 21:40:44.465 INFO: [188] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Stopping capturer
2020-03-26 21:40:44.466 INFO: [188] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.stop() Stopping ffmpeg process
2020-03-26 21:40:44.466 INFO: [188] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.stop() ffmpeg exited with value null
2020-03-26 21:40:44.466 INFO: [188] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Quitting selenium
2020-03-26 21:40:44.479 INFO: [188] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Participants in this recording:
2020-03-26 21:40:44.514 INFO: [188] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Got 8 log entries for type browser
2020-03-26 21:40:44.537 INFO: [188] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Got 987 log entries for type driver
2020-03-26 21:40:44.617 INFO: [188] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Got 0 log entries for type client
2020-03-26 21:40:44.618 INFO: [188] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Leaving web call
2020-03-26 21:40:44.643 INFO: [188] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Quitting chrome driver
2020-03-26 21:40:44.719 INFO: [188] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Chrome driver quit
2020-03-26 21:40:44.720 INFO: [188] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Finalizing the recording
2020-03-26 21:40:44.721 SEVERE: [188] org.jitsi.jibri.service.impl.FileRecordingJibriService.finalize() Failed to run finalize script: java.io.IOException: Cannot run program “/path/to/finalize_recording.sh”: error=2, No such file or directory with stack:
java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
org.jitsi.jibri.util.ProcessWrapper.start(ProcessWrapper.kt:87)
org.jitsi.jibri.service.impl.FileRecordingJibriService.finalize(FileRecordingJibriService.kt:205)
org.jitsi.jibri.service.impl.FileRecordingJibriService.stop(FileRecordingJibriService.kt:190)
org.jitsi.jibri.JibriManager.stopService(JibriManager.kt:254)
org.jitsi.jibri.JibriManager$startService$1.invoke(JibriManager.kt:205)
org.jitsi.jibri.JibriManager$startService$1.invoke(JibriManager.kt:84)
org.jitsi.jibri.util.StatusPublisher$addStatusHandler$1.invoke(StatusPublisher.kt:37)
org.jitsi.jibri.util.StatusPublisher$addStatusHandler$1.invoke(StatusPublisher.kt:29)
org.jitsi.jibri.util.StatusPublisher$publishStatus$1.invoke(StatusPublisher.kt:53)
org.jitsi.jibri.util.StatusPublisher$publishStatus$1.invoke(StatusPublisher.kt:29)
kotlin.collections.CollectionsKt__MutableCollectionsKt.filterInPlace$CollectionsKt__MutableCollectionsKt(MutableCollections.kt:191)
kotlin.collections.CollectionsKt__MutableCollectionsKt.retainAll(MutableCollections.kt:182)
org.jitsi.jibri.util.StatusPublisher.publishStatus(StatusPublisher.kt:53)
org.jitsi.jibri.service.impl.StatefulJibriService.onServiceStateChange(StatefulJibriService.kt:40)
org.jitsi.jibri.service.impl.StatefulJibriService.access$onServiceStateChange(StatefulJibriService.kt:26)
org.jitsi.jibri.service.impl.StatefulJibriService$1.invoke(StatefulJibriService.kt:35)
org.jitsi.jibri.service.impl.StatefulJibriService$1.invoke(StatefulJibriService.kt:26)
org.jitsi.jibri.util.NotifyingStateMachine.notify(NotifyingStateMachine.kt:26)
org.jitsi.jibri.service.JibriServiceStateMachine.access$notify(JibriServiceStateMachine.kt:46)
org.jitsi.jibri.service.JibriServiceStateMachine$stateMachine$1$5.invoke(JibriServiceStateMachine.kt:100)
org.jitsi.jibri.service.JibriServiceStateMachine$stateMachine$1$5.invoke(JibriServiceStateMachine.kt:46)
com.tinder.StateMachine.notifyOnTransition(StateMachine.kt:65)
com.tinder.StateMachine.transition(StateMachine.kt:23)
org.jitsi.jibri.service.JibriServiceStateMachine.transition(JibriServiceStateMachine.kt:112)
org.jitsi.jibri.service.impl.StatefulJibriService$registerSubComponent$1.invoke(StatefulJibriService.kt:46)
org.jitsi.jibri.service.impl.StatefulJibriService$registerSubComponent$1.invoke(StatefulJibriService.kt:26)
org.jitsi.jibri.util.StatusPublisher$addStatusHandler$1.invoke(StatusPublisher.kt:37)
org.jitsi.jibri.util.StatusPublisher$addStatusHandler$1.invoke(StatusPublisher.kt:29)
org.jitsi.jibri.util.StatusPublisher$publishStatus$1.invoke(StatusPublisher.kt:53)
org.jitsi.jibri.util.StatusPublisher$publishStatus$1.invoke(StatusPublisher.kt:29)
kotlin.collections.CollectionsKt__MutableCollectionsKt.filterInPlace$CollectionsKt__MutableCollectionsKt(MutableCollections.kt:191)
kotlin.collections.CollectionsKt__MutableCollectionsKt.retainAll(MutableCollections.kt:182)
org.jitsi.jibri.util.StatusPublisher.publishStatus(StatusPublisher.kt:53)
org.jitsi.jibri.selenium.JibriSelenium.onSeleniumStateChange(JibriSelenium.kt:181)
org.jitsi.jibri.selenium.JibriSelenium.access$onSeleniumStateChange(JibriSelenium.kt:112)
org.jitsi.jibri.selenium.JibriSelenium$1.invoke(JibriSelenium.kt:166)
org.jitsi.jibri.selenium.JibriSelenium$1.invoke(JibriSelenium.kt:112)
org.jitsi.jibri.util.NotifyingStateMachine.notify(NotifyingStateMachine.kt:26)
org.jitsi.jibri.selenium.SeleniumStateMachine.access$notify(SeleniumStateMachine.kt:34)
org.jitsi.jibri.selenium.SeleniumStateMachine$stateMachine$1$5.invoke(SeleniumStateMachine.kt:79)
org.jitsi.jibri.selenium.SeleniumStateMachine$stateMachine$1$5.invoke(SeleniumStateMachine.kt:34)
com.tinder.StateMachine.notifyOnTransition(StateMachine.kt:65)
com.tinder.StateMachine.transition(StateMachine.kt:23)
org.jitsi.jibri.selenium.SeleniumStateMachine.transition(SeleniumStateMachine.kt:84)
org.jitsi.jibri.selenium.JibriSelenium$joinCall$1.run(JibriSelenium.kt:257)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:748)

2020-03-26 21:40:44.721 INFO: [188] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: BUSY -> IDLE
2020-03-26 21:40:44.722 INFO: [188] org.jitsi.jibri.api.xmpp.XmppApi.updatePresence() Jibri reports its status is now JibriStatus(busyStatus=IDLE, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections
2020-03-26 21:40:44.722 INFO: [188] org.jitsi.xmpp.mucclient.MucClientManager.log() Setting a presence extension: org.jitsi.xmpp.extensions.jibri.JibriStatusPacketExt@727621b

two more things:

  1. I copied the room URL from the logs into my browser and I could open it in Chrome without problems.
  2. To rule out any hardware-related issues I upscaled my jibri server’s VM to a machine with 4 vCPUs and 16 GB RAM for a test run. Result is the same.

Did you try visiting the call URL from the same machine where Jibri is running? Sometimes people have connectivity issues there that don’t show up on their own computers.

1 Like

Hey, thanks for your reply! Hm, I tried to open the URL from a text-based terminal browser in my jibri machine and it kinda worked (not much to see in a text browser, but the plain HTML was there.).

Are you running Jibri with java 8? If not, try that. It’s another common pitfall and manifests in random ways.

1 Like

hey,
I really appreciate your efforts to help me :slight_smile: +1

I#m not entirely sure if my versions are correct, but this is what I have installed on my system regarding Java and ffmpeg:

root@jibri-recording-ubuntu-16-4gb-hel1-1:~# java -version
openjdk version “1.8.0_242”
OpenJDK Runtime Environment (build 1.8.0_242-8u242-b08-0ubuntu3~16.04-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)

root@jibri-recording-ubuntu-16-4gb-hel1-1:~# ffmpeg -version
ffmpeg version 4.2.2-0york0~16.04 Copyright © 2000-2019 the FFmpeg developers built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609

hm. when i check jibri status I get the following. Don’t know if this is relevant for the service’s functionality or not:

service jibri status

Mar 28 12:12:51 jibri-recording-ubuntu-16-4gb-hel1-1 systemd[1]: Started Jibri Process.

Mar 28 12:12:53 jibri-recording-ubuntu-16-4gb-hel1-1 launch.sh[1359]: SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.

Mar 28 12:12:53 jibri-recording-ubuntu-16-4gb-hel1-1 launch.sh[1359]: SLF4J: Defaulting to no-operation (NOP) logger implementation

Mar 28 12:12:53 jibri-recording-ubuntu-16-4gb-hel1-1 launch.sh[1359]: SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.