Install and configure Jibri

Good morning, I have noticed that I can no longer record the session and this happens because I cannot activate jibri, does anyone know why this happens?

● jibri.service - Jibri Process
Loaded: loaded (/etc/systemd/system/jibri.service; disabled; vendor preset>
Active: failed (Result: exit-code) since Fri 2022-06-24 16:29:11 UTC; 12s >
Process: 50321 ExecStart=/opt/jitsi/jibri/launch.sh (code=exited, status=1/>
Main PID: 50321 (code=exited, status=1/FAILURE)

Jun 24 16:29:11 video1 systemd[1]: jibri.service: Scheduled restart job, restar>
Jun 24 16:29:11 video1 systemd[1]: Stopped Jibri Process.
Jun 24 16:29:11 video1 systemd[1]: jibri.service: Start request repeated too qu>
Jun 24 16:29:11 video1 systemd[1]: jibri.service: Failed with result 'exit-code>
Jun 24 16:29:11 video1 systemd[1]: Failed to start Jibri Process.
Jun 24 16:29:14 video1 systemd[1]: jibri.service: Start request repeated too qu>
Jun 24 16:29:14 video1 systemd[1]: jibri.service: Failed with result 'exit-code>
Jun 24 16:29:14 video1 systemd[1]: Failed to start Jibri Process.

What are the resources?
CPU, RAM…?

Ram: 12GB
CPU: 6 cores
Ubuntu: 20.04

  • Are jibri and jitsi on the same server?
  • Does it record if you try again 1 min after the first fail?
  • Can you try using “1280x720” as resolution?

-Jibri and jitsi are on the same server

-I tried after 1 minute but it didn’t work

-I’m using that resolution currently 1280x720

virtual 1280x720
#Virtual 1920x1080

what is the resolution in your jibri.conf?

ffmpeg {
resolution = “1280x720”
// The audio source that will be used to capture audio on Linux
audio-source = “alsa”
// The audio device that will be used to capture audio on Linux
audio-device = “plug:bsnoop”
}

Is java 8 still needed instead of java 11?

No, Java 11 is fine, 8 is no longer mandatory.

1 Like

Jibri still won’t record for me and I am wondering why. If you could help that would be great

Here are my jibri logs

Jibri 2022-06-27 10:36:18.778 FINE: [80] [hostname=prosody id=prosody] MucClient$3.handleIQRequest#503: Received an IQ with type set: IQ Stanza (jibri http://jitsi.org/protocol/jibri) [to=jibri@auth.meet.jitsi/3RmmKNNk,from=jibribrewery@internal-muc.meet.jitsi/focus,id=amlicmlAYXV0aC5tZWV0LmppdHNpLzNSbW1LTk5rAFZNM1hFLTUwMTUwAH0woAvbu4tWGr+r3rCiV8U=,type=set,]
Jibri 2022-06-27 10:36:18.779 INFO: [80] XmppApi.handleJibriIq#230: Received JibriIq <iq xmlns='jabber:client' to='jibri@auth.meet.jitsi/3RmmKNNk' from='jibribrewery@internal-muc.meet.jitsi/focus' id='amlicmlAYXV0aC5tZWV0LmppdHNpLzNSbW1LTk5rAFZNM1hFLTUwMTUwAH0woAvbu4tWGr+r3rCiV8U=' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' action='start' recording_mode='file' room='dailystandup@muc.meet.jitsi' session_id='ckkxdjxbfueqaiyh' app_data='{"file_recording_metadata":{"share":true}}'/></iq> from environment [MucClient id=prosody hostname=prosody]
Jibri 2022-06-27 10:36:18.779 INFO: [80] XmppApi.handleStartJibriIq#262: Received start request, starting service
Jibri 2022-06-27 10:36:18.782 INFO: [80] XmppApi.handleStartService#373: Parsed call url info: CallUrlInfo(baseUrl=jitsi.kbi.ai, callName=dailystandup, urlParams=[])
Jibri 2022-06-27 10:36:18.782 INFO: [80] JibriManager.startFileRecording#138: Starting a file recording with params: FileRecordingRequestParams(callParams=CallParams(callUrlInfo=CallUrlInfo(baseUrl=jitsi.kbi.ai, callName=dailystandup, urlParams=[]), email='', passcode=null, callStatsUsernameOverride=, displayName=), sessionId=ckkxdjxbfueqaiyh, callLoginParams=XmppCredentials(domain=recorder.meet.jitsi, port=null, username=recorder, password=*****))
Jibri 2022-06-27 10:36:18.783 FINE: [80] [session_id=ckkxdjxbfueqaiyh] FfmpegCapturer.<init>#88: Detected os as OS: LINUX
Jibri 2022-06-27 10:36:18.783 FINE: [80] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Trying to retrieve key 'jibri.chrome.flags' from source 'config' as type kotlin.collections.List<kotlin.String>
Jibri 2022-06-27 10:36:18.784 FINE: [80] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Successfully retrieved key 'jibri.chrome.flags' from source 'config' as type kotlin.collections.List<kotlin.String>
Starting ChromeDriver 99.0.4844.51 (d537ec02474b5afe23684e7963d538896c63ac77-refs/branch-heads/4844@{#875}) on port 4000
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Jibri 2022-06-27 10:36:18.992 INFO: [80] org.openqa.selenium.remote.ProtocolHandshake.createSession: Detected dialect: OSS
Jibri 2022-06-27 10:36:18.996 FINE: [80] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: checking for value via suppliers:
LambdaSupplier: 'JibriConfig::recordingDirectory'
ConfigSourceSupplier: key: 'jibri.recording.recordings-directory', type: 'kotlin.String', source: 'config'
Jibri 2022-06-27 10:36:18.996 FINE: [80] MainKt$setupMetaconfigLogger$1.debug#232: LambdaSupplier: Trying to retrieve value via JibriConfig::recordingDirectory
Jibri 2022-06-27 10:36:18.996 FINE: [80] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: failed to find value via LambdaSupplier: 'JibriConfig::recordingDirectory': org.jitsi.metaconfig.ConfigException$UnableToRetrieve$Error: class java.lang.NullPointerException
Jibri 2022-06-27 10:36:18.996 FINE: [80] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Trying to retrieve key 'jibri.recording.recordings-directory' from source 'config' as type kotlin.String
Jibri 2022-06-27 10:36:18.997 FINE: [80] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Successfully retrieved key 'jibri.recording.recordings-directory' from source 'config' as type kotlin.String
Jibri 2022-06-27 10:36:18.997 FINE: [80] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: value found via ConfigSourceSupplier: key: 'jibri.recording.recordings-directory', type: 'kotlin.String', source: 'config'
Jibri 2022-06-27 10:36:18.997 FINE: [80] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: checking for value via suppliers:
LambdaSupplier: 'JibriConfig::finalizeRecordingScriptPath'
ConfigSourceSupplier: key: 'jibri.recording.finalize-script', type: 'kotlin.String', source: 'config'
Jibri 2022-06-27 10:36:18.997 FINE: [80] MainKt$setupMetaconfigLogger$1.debug#232: LambdaSupplier: Trying to retrieve value via JibriConfig::finalizeRecordingScriptPath
Jibri 2022-06-27 10:36:18.997 FINE: [80] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: failed to find value via LambdaSupplier: 'JibriConfig::finalizeRecordingScriptPath': org.jitsi.metaconfig.ConfigException$UnableToRetrieve$Error: class java.lang.NullPointerException
Jibri 2022-06-27 10:36:18.997 FINE: [80] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Trying to retrieve key 'jibri.recording.finalize-script' from source 'config' as type kotlin.String
Jibri 2022-06-27 10:36:18.998 FINE: [80] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Successfully retrieved key 'jibri.recording.finalize-script' from source 'config' as type kotlin.String
Jibri 2022-06-27 10:36:18.998 FINE: [80] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: value found via ConfigSourceSupplier: key: 'jibri.recording.finalize-script', type: 'kotlin.String', source: 'config'
Jibri 2022-06-27 10:36:18.998 INFO: [80] [session_id=ckkxdjxbfueqaiyh] FileRecordingJibriService.<init>#134: Writing recording to /config/jibri/recording/ckkxdjxbfueqaiyh, finalize script path /config/jibri/finalize.sh
Jibri 2022-06-27 10:36:18.998 FINE: [80] JibriStatsDClient.incrementCounter#38: Incrementing statsd counter: start:recording
Jibri 2022-06-27 10:36:18.998 INFO: [80] JibriStatusManager$$special$$inlined$observable$1.afterChange#72: Busy status has changed: IDLE -> BUSY
Jibri 2022-06-27 10:36:18.999 FINE: [80] WebhookClient$updateStatus$1.invokeSuspend#107: Updating 0 subscribers of status
Jibri 2022-06-27 10:36:18.999 INFO: [80] XmppApi.updatePresence#203: Jibri reports its status is now JibriStatus(busyStatus=BUSY, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections
Jibri 2022-06-27 10:36:18.999 FINE: [80] MucClientManager.setPresenceExtension#160: Setting a presence extension: org.jitsi.xmpp.extensions.jibri.JibriStatusPacketExt@5e9d4b18
Jibri 2022-06-27 10:36:18.999 FINE: [80] MucClientManager.saveExtension#185: Replacing presence extension: org.jitsi.xmpp.extensions.jibri.JibriStatusPacketExt@1d8fd9e6
Jibri 2022-06-27 10:36:18.999 INFO: [80] XmppApi.handleStartJibriIq#275: Sending 'pending' response to start IQ
Jibri 2022-06-27 10:36:19.000 INFO: [127] AbstractPageObject.visit#32: Visiting url jitsi.kbi.ai
Jibri 2022-06-27 10:36:19.001 FINE: [43] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element busy-status from namespace http://jitsi.org/protocol/jibri
Jibri 2022-06-27 10:36:19.001 FINE: [43] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element health-status from namespace http://jitsi.org/protocol/health
Jibri 2022-06-27 10:36:19.005 SEVERE: [127] [session_id=ckkxdjxbfueqaiyh] JibriSelenium$joinCall$1.run#327: An error occurred while joining the call
org.openqa.selenium.InvalidArgumentException: invalid argument
(Session info: chrome=99.0.4844.84)
(Driver info: chromedriver=99.0.4844.51 (d537ec02474b5afe23684e7963d538896c63ac77-refs/branch-heads/4844@{#875}),platform=Linux 5.4.0-1083-azure x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'jibri-0', ip: '10.244.2.19', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-1083-azure', java.version: '11.0.14'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 99.0.4844.51 (d537ec02474b5..., userDataDir: /tmp/.com.google.Chrome.rxWAus}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:37971}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: LINUX, platformName: LINUX, proxy: Proxy(), rotatable: false, setWindowRect: true, strictFileInteractability: false, takesHeapSnapshot: true, takesScreenshot: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unexpectedAlertBehaviour: ignore, unhandledPromptBehavior: ignore, version: 99.0.4844.84, webStorageEnabled: true, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:virtualAuthenticators: true}
Session ID: 77020460e88a0151289c9e56d0b12f5f
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:271)
at org.jitsi.jibri.selenium.pageobjects.AbstractPageObject.visit(AbstractPageObject.kt:35)
at org.jitsi.jibri.selenium.JibriSelenium$joinCall$1.run(JibriSelenium.kt:295)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Jibri 2022-06-27 10:36:19.005 INFO: [127] [session_id=ckkxdjxbfueqaiyh] JibriSelenium.onSeleniumStateChange#216: Transitioning from state Starting up to Error: FailedToJoinCall SESSION Failed to join the call
Jibri 2022-06-27 10:36:19.006 INFO: [127] [session_id=ckkxdjxbfueqaiyh] StatefulJibriService.onServiceStateChange#39: File recording service transitioning from state Starting up to Error: FailedToJoinCall SESSION Failed to join the call
Jibri 2022-06-27 10:36:19.006 INFO: [127] XmppApi$createServiceStatusHandler$1.invoke#311: Current service had an error Error: FailedToJoinCall SESSION Failed to join the call, sending error iq <iq xmlns='jabber:client' to='jibribrewery@internal-muc.meet.jitsi/focus' id='Z4DNE-199' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' status='off' failure_reason='error' should_retry='true'/></iq>
Jibri 2022-06-27 10:36:19.006 FINE: [127] JibriStatsDClient.incrementCounter#38: Incrementing statsd counter: stop:recording
Jibri 2022-06-27 10:36:19.006 INFO: [127] JibriManager.stopService#260: Stopping the current service
Jibri 2022-06-27 10:36:19.006 INFO: [127] [session_id=ckkxdjxbfueqaiyh] FileRecordingJibriService.stop#182: Stopping capturer
Jibri 2022-06-27 10:36:19.006 INFO: [127] [session_id=ckkxdjxbfueqaiyh] JibriSubprocess.stop#75: Stopping ffmpeg process
Jibri 2022-06-27 10:36:19.007 INFO: [127] [session_id=ckkxdjxbfueqaiyh] JibriSubprocess.stop#89: ffmpeg exited with value null
Jibri 2022-06-27 10:36:19.007 INFO: [127] [session_id=ckkxdjxbfueqaiyh] FileRecordingJibriService.stop#184: Quitting selenium
Jibri 2022-06-27 10:36:19.007 INFO: [127] [session_id=ckkxdjxbfueqaiyh] FileRecordingJibriService.stop#191: No media was recorded, deleting directory and skipping metadata file & finalize
Jibri 2022-06-27 10:36:19.007 INFO: [127] [session_id=ckkxdjxbfueqaiyh] JibriSelenium.leaveCallAndQuitBrowser#338: Leaving call and quitting browser
Jibri 2022-06-27 10:36:19.007 INFO: [127] [session_id=ckkxdjxbfueqaiyh] JibriSelenium.leaveCallAndQuitBrowser#341: Recurring call status checks cancelled
Jibri 2022-06-27 10:36:19.011 INFO: [127] [session_id=ckkxdjxbfueqaiyh] JibriSelenium.leaveCallAndQuitBrowser#347: Got 0 log entries for type browser
Jibri 2022-06-27 10:36:19.015 INFO: [127] [session_id=ckkxdjxbfueqaiyh] JibriSelenium.leaveCallAndQuitBrowser#347: Got 70 log entries for type driver
Jibri 2022-06-27 10:36:19.017 INFO: [127] [session_id=ckkxdjxbfueqaiyh] JibriSelenium.leaveCallAndQuitBrowser#347: Got 0 log entries for type client
Jibri 2022-06-27 10:36:19.017 INFO: [127] [session_id=ckkxdjxbfueqaiyh] JibriSelenium.leaveCallAndQuitBrowser#356: Leaving web call
Jibri 2022-06-27 10:36:19.027 INFO: [127] [session_id=ckkxdjxbfueqaiyh] JibriSelenium.leaveCallAndQuitBrowser#363: Quitting chrome driver
Jibri 2022-06-27 10:36:19.093 INFO: [127] [session_id=ckkxdjxbfueqaiyh] JibriSelenium.leaveCallAndQuitBrowser#365: Chrome driver quit
Jibri 2022-06-27 10:36:19.093 INFO: [127] JibriStatusManager$$special$$inlined$observable$1.afterChange#72: Busy status has changed: BUSY -> IDLE
Jibri 2022-06-27 10:36:19.093 FINE: [127] WebhookClient$updateStatus$1.invokeSuspend#107: Updating 0 subscribers of status
Jibri 2022-06-27 10:36:19.093 INFO: [127] XmppApi.updatePresence#203: Jibri reports its status is now JibriStatus(busyStatus=IDLE, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections
Jibri 2022-06-27 10:36:19.093 FINE: [127] MucClientManager.setPresenceExtension#160: Setting a presence extension: org.jitsi.xmpp.extensions.jibri.JibriStatusPacketExt@68cae4f8
Jibri 2022-06-27 10:36:19.094 FINE: [127] MucClientManager.saveExtension#185: Replacing presence extension: org.jitsi.xmpp.extensions.jibri.JibriStatusPacketExt@5e9d4b18
Jibri 2022-06-27 10:36:19.095 FINE: [43] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element busy-status from namespace http://jitsi.org/protocol/jibri
Jibri 2022-06-27 10:36:19.095 FINE: [43] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element health-status from namespace http://jitsi.org/protocol/health

This is in kubernetes, but a couple things stand out to me

SEVERE: [127] JibriSelenium$joinCall$1.run#327: An error occurred while joining the call org.openqa.selenium.InvalidArgumentException: invalid argument
and
JibriSelenium.onSeleniumStateChange#216: Transitioning from state Starting up to Error: FailedToJoinCall SESSION Failed to join the call

Here is my output of ls -l /tmp

total 81088
-rw-r--r-- 1 jibri jibri    11724 Jun 27 10:36 chromedriver.log
-rw-r--r-- 1 root  root  82967408 Mar 28 04:02 google-chrome-stable_99.0.4844.84-1_amd64.deb
drwxr-xr-x 2 jibri jibri     4096 Jun 27 09:14 hsperfdata_jibri
drwxr-xr-x 2 root  root      4096 Mar 28 02:04 hsperfdata_root
drwx------ 2 jibri jibri     4096 Jun 27 09:14 pulse-2jtxpd3dkewk
-rw-r--r-- 1 jibri jibri    40619 Jun 27 09:14 xorg.log