Jibri - recording is on, recording is stopped on Ubuntu 18.04

Configure and run jitsi (jicofo, prosody, jitsi-videobridge) and jibri on the same server. Jitsi works well.
But jibri doesnt. (use https://youtu.be/S43-A1N_COE during configure).
Recording was started, after 10 seconds was stopped and reload web-page. MP4-File was created, but it just 48bytes.

Why it was so hard to configure? Why information on github about configure not correct?
Try to make simple, please and make default (WORKED!!!) configuration. Remeber about KISS principle!

Hello @Leksey_Nikitin,

This guide is not the official one but it makes the installation so easy if your host is a Debian Buster machine.

Only the chapter Jitsi Meet Server (JMS) is needed for you.

1 Like

2020-11-17 12:31:31.161 INFO: [1] org.jitsi.jibri.Main.handleCommandLineArgs() Jibri run with args [–config, /etc/jitsi/jibri/config.json]
2020-11-17 12:31:31.369 INFO: [1] org.jitsi.jibri.Main.setupLegacyConfig() Checking legacy config file /etc/jitsi/jibri/config.json
2020-11-17 12:31:31.370 INFO: [1] org.jitsi.jibri.Main.setupLegacyConfig() Legacy config file /etc/jitsi/jibri/config.json doesn’t exist
2020-11-17 12:31:33.550 INFO: [1] org.jitsi.jibri.webhooks.v1.JwtInfo.Companion.fromConfig() got jwtConfig: {}

2020-11-17 12:31:33.551 INFO: [1] org.jitsi.jibri.webhooks.v1.JwtInfo.Companion.fromConfig() Unable to create JwtInfo: com.typesafe.config.ConfigException$Missing: reference.conf @ jar:file:/opt/jitsi/jibri/jibri.jar!/reference.conf: 52: No configuration setting found for key ‘signing-key-path’
2020-11-17 12:31:33.964 INFO: [1] org.jitsi.jibri.Main.main() Using port 3333 for internal HTTP API
2020-11-17 12:31:34.004 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-17 12:31:34.905 INFO: [1] 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-11-17 12:31:34.927 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.start() Connecting to xmpp environment on thestate.site with config XmppEnvironmentConfig(name=the state, xmppServerHosts=[thestate.site], xmppDomain=thestate.site, controlLogin=XmppCredentials(domain=auth.thestate.site, username=jibri, password=jibriauthpass), controlMuc=XmppMuc(domain=internal.auth.thestate.site, roomName=JibriBrewery, nickname=jibri), sipControlMuc=null, callLogin=XmppCredentials(domain=recorder.thestate.site, username=recorder, password=jibrirecorderpass), stripFromRoomDomain=conference, usageTimeoutMins=0, trustAllXmppCerts=true)
2020-11-17 12:31:34.928 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.start() The trustAllXmppCerts config is enabled for this domain, all XMPP server provided certificates will be accepted
2020-11-17 12:31:35.038 INFO: [1] org.jitsi.jibri.Main.main() Using port 2222 for HTTP API
2020-11-17 12:31:35.165 WARNING: [25] org.jitsi.xmpp.mucclient.MucClient.log() Disabling certificate verification!
2020-11-17 12:31:35.801 INFO: [25] org.jitsi.xmpp.mucclient.MucClient.log() Connected.
2020-11-17 12:31:35.801 INFO: [25] org.jitsi.xmpp.mucclient.MucClient.log() Logging in.
2020-11-17 12:31:36.028 INFO: [25] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.thestate.site
2020-11-17 12:32:04.736 INFO: [40] org.jitsi.jibri.api.xmpp.XmppApi.handleJibriIq() Received JibriIq from environment [MucClient id=thestate.site hostname=thestate.site]
2020-11-17 12:32:04.737 INFO: [40] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Received start request, starting service
2020-11-17 12:32:04.882 INFO: [40] org.jitsi.jibri.api.xmpp.XmppApi.handleStartService() Parsed call url info: CallUrlInfo(baseUrl=https://thestate.site, callName=easternartworksimplyliterally, urlParams=)
2020-11-17 12:32:04.884 INFO: [40] org.jitsi.jibri.JibriManager.startFileRecording() Starting a file recording with params: FileRecordingRequestParams(callParams=CallParams(callUrlInfo=CallUrlInfo(baseUrl=https://thestate.site, callName=easternartworksimplyliterally, urlParams=)), sessionId=llujhtyemzkeotje, callLoginParams=XmppCredentials(domain=recorder.thestate.site, username=recorder, password=jibrirecorderpass))
2020-11-17 12:32:06.059 INFO: [40] org.openqa.selenium.remote.ProtocolHandshake.createSession() Detected dialect: OSS
2020-11-17 12:32:06.097 FINE: [40] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.() Detected os as OS: LINUX
2020-11-17 12:32:06.107 INFO: [40] org.jitsi.jibri.service.impl.FileRecordingJibriService.() Writing recording to /recordings/llujhtyemzkeotje, finalize script path /path/to/finalize
2020-11-17 12:32:06.116 FINE: [40] org.jitsi.jibri.statsd.JibriStatsDClient.incrementCounter() Incrementing statsd counter: start:recording
2020-11-17 12:32:06.118 INFO: [40] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: IDLE -> BUSY
2020-11-17 12:32:06.118 FINE: [40] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-17 12:32:06.118 INFO: [40] 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-11-17 12:32:06.120 INFO: [40] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Sending ‘pending’ response to start IQ
2020-11-17 12:32:07.995 FINE: [51] org.jitsi.jibri.selenium.pageobjects.CallPage.visit() Visiting url https://thestate.site/easternartworksimplyliterally#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
2020-11-17 12:32:08.991 FINE: [51] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property ‘isJoined’ of undefined
2020-11-17 12:32:09.514 FINE: [51] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property ‘isJoined’ of undefined
2020-11-17 12:32:10.641 INFO: [51] org.jitsi.jibri.selenium.pageobjects.CallPage.visit() Waited 1689 milliseconds for call page to load
2020-11-17 12:32:10.645 INFO: [51] org.jitsi.jibri.selenium.JibriSelenium.() Starting empty call check with a timeout of PT30S
2020-11-17 12:32:10.671 INFO: [51] org.jitsi.jibri.selenium.JibriSelenium.onSeleniumStateChange() Transitioning from state Starting up to Running
2020-11-17 12:32:10.680 INFO: [51] org.jitsi.jibri.service.impl.FileRecordingJibriService.invoke() Selenium joined the call, starting the capturer
2020-11-17 12:32:10.777 INFO: [51] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.launch() Starting ffmpeg with command ffmpeg -y -v info -f x11grab -draw_mouse 0 -r 30 -s 1280x720 -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 /recordings/llujhtyemzkeotje/easternartworksimplyliterally_2020-11-17-12-32-06.mp4 ([ffmpeg, -y, -v, info, -f, x11grab, -draw_mouse, 0, -r, 30, -s, 1280x720, -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, /recordings/llujhtyemzkeotje/easternartworksimplyliterally_2020-11-17-12-32-06.mp4])
2020-11-17 12:32:13.350 INFO: [54] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegStateMachineStateChange() Ffmpeg capturer transitioning from state Starting up to Running
2020-11-17 12:32:13.369 INFO: [54] org.jitsi.jibri.service.impl.FileRecordingJibriService.onServiceStateChange() File recording service transitioning from state Starting up to Running
2020-11-17 12:32:13.371 INFO: [54] org.jitsi.jibri.api.xmpp.XmppApi.invoke() Current service started up successfully, sending on iq
2020-11-17 12:32:19.816 FINE: [16] org.jitsi.jibri.util.ProcessStatePublisher.ffmpeg.invoke() Process ffmpeg hasn’t written in 2 seconds, publishing periodic update
2020-11-17 12:32:19.818 INFO: [49] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegProcessUpdate() Ffmpeg quit abruptly. Last output line: frame= 20 fps=4.3 q=21.0 size= 0kB time=00:00:00.63 bitrate= 0.6kbits/s speed=0.136x
2020-11-17 12:32:19.821 INFO: [49] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegStateMachineStateChange() Ffmpeg capturer transitioning from state Running to Error: QuitUnexpectedly SESSION frame= 20 fps=4.3 q=21.0 size= 0kB time=00:00:00.63 bitrate= 0.6kbits/s speed=0.136x
2020-11-17 12:32:19.822 INFO: [49] org.jitsi.jibri.service.impl.FileRecordingJibriService.onServiceStateChange() File recording service transitioning from state Running to Error: QuitUnexpectedly SESSION frame= 20 fps=4.3 q=21.0 size= 0kB time=00:00:00.63 bitrate= 0.6kbits/s speed=0.136x
2020-11-17 12:32:19.822 INFO: [49] org.jitsi.jibri.api.xmpp.XmppApi.invoke() Current service had an error Error: QuitUnexpectedly SESSION frame= 20 fps=4.3 q=21.0 size= 0kB time=00:00:00.63 bitrate= 0.6kbits/s speed=0.136x , sending error iq
2020-11-17 12:32:19.822 FINE: [49] org.jitsi.jibri.statsd.JibriStatsDClient.incrementCounter() Incrementing statsd counter: stop:recording
2020-11-17 12:32:19.825 INFO: [49] org.jitsi.jibri.JibriManager.stopService() Stopping the current service
2020-11-17 12:32:19.826 INFO: [49] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Stopping capturer
2020-11-17 12:32:19.826 INFO: [49] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.stop() Stopping ffmpeg process
2020-11-17 12:32:19.839 INFO: [49] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.stop() ffmpeg exited with value 137
2020-11-17 12:32:19.839 INFO: [49] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Quitting selenium
2020-11-17 12:32:19.940 SEVERE: [49] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() An error occurred while trying to get the participants list, proceeding with an empty participants list: org.openqa.selenium.WebDriverException: unknown error: session deleted because of page crash
from tab crashed
(Session info: chrome=86.0.4240.198)
(Driver info: chromedriver=86.0.4240.22 (398b0743353ff36fb1b82468f63a3a93b4e2e89e-refs/branch-heads/4240@{#378}),platform=Linux 4.15.0-123-generic 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: ‘194-67-90-48.cloudvps.regruhosting.ru’, ip: ‘194.67.90.48’, os.name: ‘Linux’, os.arch: ‘amd64’, os.version: ‘4.15.0-123-generic’, java.version: ‘1.8.0_275’
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 86.0.4240.22 (398b0743353ff…, userDataDir: /tmp/.com.google.Chrome.A6akv0}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:33325}, 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: 86.0.4240.198, webStorageEnabled: true, webauthn:virtualAuthenticators: true}
Session ID: eb1a793bc8b23fa9adbfaedee148fef2 with stack:
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:423)
org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:480)
org.jitsi.jibri.selenium.pageobjects.CallPage.getParticipants(CallPage.kt:145)
org.jitsi.jibri.selenium.JibriSelenium.getParticipants(JibriSelenium.kt:266)
org.jitsi.jibri.service.impl.FileRecordingJibriService.stop(FileRecordingJibriService.kt:169)
org.jitsi.jibri.JibriManager.stopService(JibriManager.kt:262)
org.jitsi.jibri.JibriManager$startService$1.invoke(JibriManager.kt:210)
org.jitsi.jibri.JibriManager$startService$1.invoke(JibriManager.kt:86)
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:293)
kotlin.collections.CollectionsKt__MutableCollectionsKt.retainAll(MutableCollections.kt:284)
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:293)
kotlin.collections.CollectionsKt__MutableCollectionsKt.retainAll(MutableCollections.kt:284)
org.jitsi.jibri.util.StatusPublisher.publishStatus(StatusPublisher.kt:53)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegStateMachineStateChange(FfmpegCapturer.kt:119)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.access$onFfmpegStateMachineStateChange(FfmpegCapturer.kt:62)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer$4.invoke(FfmpegCapturer.kt:85)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer$4.invoke(FfmpegCapturer.kt:62)
org.jitsi.jibri.util.NotifyingStateMachine.notify(NotifyingStateMachine.kt:26)
org.jitsi.jibri.capture.ffmpeg.FfmpegStatusStateMachine.access$notify(FfmpegStatusStateMachine.kt:69)
org.jitsi.jibri.capture.ffmpeg.FfmpegStatusStateMachine$stateMachine$1$5.invoke(FfmpegStatusStateMachine.kt:130)
org.jitsi.jibri.capture.ffmpeg.FfmpegStatusStateMachine$stateMachine$1$5.invoke(FfmpegStatusStateMachine.kt:69)
com.tinder.StateMachine.notifyOnTransition(StateMachine.kt:65)
com.tinder.StateMachine.transition(StateMachine.kt:23)
org.jitsi.jibri.capture.ffmpeg.FfmpegStatusStateMachine.transition(FfmpegStatusStateMachine.kt:135)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegProcessUpdate(FfmpegCapturer.kt:112)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.access$onFfmpegProcessUpdate(FfmpegCapturer.kt:62)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer$3.invoke(FfmpegCapturer.kt:84)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer$3.invoke(FfmpegCapturer.kt:62)
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:293)
kotlin.collections.CollectionsKt__MutableCollectionsKt.retainAll(MutableCollections.kt:284)
org.jitsi.jibri.util.StatusPublisher.publishStatus(StatusPublisher.kt:53)
org.jitsi.jibri.util.JibriSubprocess$launch$1$1.invoke(JibriSubprocess.kt:46)
org.jitsi.jibri.util.JibriSubprocess$launch$1$1.invoke(JibriSubprocess.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:293)
kotlin.collections.CollectionsKt__MutableCollectionsKt.retainAll(MutableCollections.kt:284)
org.jitsi.jibri.util.StatusPublisher.publishStatus(StatusPublisher.kt:53)
org.jitsi.jibri.util.ProcessStatePublisher$startProcessAliveChecks$1$$special$$inlined$also$lambda$1.run(ProcessStatePublisher.kt:91)
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-11-17 12:32:19.942 INFO: [49] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Participants in this recording:
2020-11-17 12:32:20.017 INFO: [49] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Leaving call and quitting browser
2020-11-17 12:32:20.018 INFO: [49] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Recurring call status checks cancelled
2020-11-17 12:32:20.029 SEVERE: [49] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Error trying to get chromedriver logs: java.lang.ClassCastException: com.google.common.collect.Maps$TransformedEntriesMap cannot be cast to java.util.List with stack:
org.openqa.selenium.remote.RemoteLogs.getAvailableLogTypes(RemoteLogs.java:108)
org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser(JibriSelenium.kt:277)
org.jitsi.jibri.service.impl.FileRecordingJibriService.stop(FileRecordingJibriService.kt:195)
org.jitsi.jibri.JibriManager.stopService(JibriManager.kt:262)
org.jitsi.jibri.JibriManager$startService$1.invoke(JibriManager.kt:210)
org.jitsi.jibri.JibriManager$startService$1.invoke(JibriManager.kt:86)
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:293)
kotlin.collections.CollectionsKt__MutableCollectionsKt.retainAll(MutableCollections.kt:284)
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:293)
kotlin.collections.CollectionsKt__MutableCollectionsKt.retainAll(MutableCollections.kt:284)
org.jitsi.jibri.util.StatusPublisher.publishStatus(StatusPublisher.kt:53)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegStateMachineStateChange(FfmpegCapturer.kt:119)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.access$onFfmpegStateMachineStateChange(FfmpegCapturer.kt:62)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer$4.invoke(FfmpegCapturer.kt:85)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer$4.invoke(FfmpegCapturer.kt:62)
org.jitsi.jibri.util.NotifyingStateMachine.notify(NotifyingStateMachine.kt:26)
org.jitsi.jibri.capture.ffmpeg.FfmpegStatusStateMachine.access$notify(FfmpegStatusStateMachine.kt:69)
org.jitsi.jibri.capture.ffmpeg.FfmpegStatusStateMachine$stateMachine$1$5.invoke(FfmpegStatusStateMachine.kt:130)
org.jitsi.jibri.capture.ffmpeg.FfmpegStatusStateMachine$stateMachine$1$5.invoke(FfmpegStatusStateMachine.kt:69)
com.tinder.StateMachine.notifyOnTransition(StateMachine.kt:65)
com.tinder.StateMachine.transition(StateMachine.kt:23)
org.jitsi.jibri.capture.ffmpeg.FfmpegStatusStateMachine.transition(FfmpegStatusStateMachine.kt:135)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegProcessUpdate(FfmpegCapturer.kt:112)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.access$onFfmpegProcessUpdate(FfmpegCapturer.kt:62)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer$3.invoke(FfmpegCapturer.kt:84)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer$3.invoke(FfmpegCapturer.kt:62)
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:293)
kotlin.collections.CollectionsKt__MutableCollectionsKt.retainAll(MutableCollections.kt:284)
org.jitsi.jibri.util.StatusPublisher.publishStatus(StatusPublisher.kt:53)
org.jitsi.jibri.util.JibriSubprocess$launch$1$1.invoke(JibriSubprocess.kt:46)
org.jitsi.jibri.util.JibriSubprocess$launch$1$1.invoke(JibriSubprocess.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:293)
kotlin.collections.CollectionsKt__MutableCollectionsKt.retainAll(MutableCollections.kt:284)
org.jitsi.jibri.util.StatusPublisher.publishStatus(StatusPublisher.kt:53)
org.jitsi.jibri.util.ProcessStatePublisher$startProcessAliveChecks$1$$special$$inlined$also$lambda$1.run(ProcessStatePublisher.kt:91)
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-11-17 12:32:20.030 INFO: [49] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Leaving web call
2020-11-17 12:32:20.051 INFO: [49] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Quitting chrome driver
2020-11-17 12:32:20.084 INFO: [49] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Chrome driver quit
2020-11-17 12:32:20.084 INFO: [49] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Finalizing the recording
2020-11-17 12:32:20.086 SEVERE: [49] org.jitsi.jibri.service.impl.FileRecordingJibriService.finalize() Failed to run finalize script: java.io.IOException: Cannot run program “/path/to/finalize”: 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:212)
org.jitsi.jibri.service.impl.FileRecordingJibriService.stop(FileRecordingJibriService.kt:197)
org.jitsi.jibri.JibriManager.stopService(JibriManager.kt:262)
org.jitsi.jibri.JibriManager$startService$1.invoke(JibriManager.kt:210)
org.jitsi.jibri.JibriManager$startService$1.invoke(JibriManager.kt:86)
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:293)
kotlin.collections.CollectionsKt__MutableCollectionsKt.retainAll(MutableCollections.kt:284)
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:293)
kotlin.collections.CollectionsKt__MutableCollectionsKt.retainAll(MutableCollections.kt:284)
org.jitsi.jibri.util.StatusPublisher.publishStatus(StatusPublisher.kt:53)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegStateMachineStateChange(FfmpegCapturer.kt:119)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.access$onFfmpegStateMachineStateChange(FfmpegCapturer.kt:62)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer$4.invoke(FfmpegCapturer.kt:85)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer$4.invoke(FfmpegCapturer.kt:62)
org.jitsi.jibri.util.NotifyingStateMachine.notify(NotifyingStateMachine.kt:26)
org.jitsi.jibri.capture.ffmpeg.FfmpegStatusStateMachine.access$notify(FfmpegStatusStateMachine.kt:69)
org.jitsi.jibri.capture.ffmpeg.FfmpegStatusStateMachine$stateMachine$1$5.invoke(FfmpegStatusStateMachine.kt:130)
org.jitsi.jibri.capture.ffmpeg.FfmpegStatusStateMachine$stateMachine$1$5.invoke(FfmpegStatusStateMachine.kt:69)
com.tinder.StateMachine.notifyOnTransition(StateMachine.kt:65)
com.tinder.StateMachine.transition(StateMachine.kt:23)
org.jitsi.jibri.capture.ffmpeg.FfmpegStatusStateMachine.transition(FfmpegStatusStateMachine.kt:135)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegProcessUpdate(FfmpegCapturer.kt:112)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.access$onFfmpegProcessUpdate(FfmpegCapturer.kt:62)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer$3.invoke(FfmpegCapturer.kt:84)
org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer$3.invoke(FfmpegCapturer.kt:62)
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:293)
kotlin.collections.CollectionsKt__MutableCollectionsKt.retainAll(MutableCollections.kt:284)
org.jitsi.jibri.util.StatusPublisher.publishStatus(StatusPublisher.kt:53)
org.jitsi.jibri.util.JibriSubprocess$launch$1$1.invoke(JibriSubprocess.kt:46)
org.jitsi.jibri.util.JibriSubprocess$launch$1$1.invoke(JibriSubprocess.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:293)
kotlin.collections.CollectionsKt__MutableCollectionsKt.retainAll(MutableCollections.kt:284)
org.jitsi.jibri.util.StatusPublisher.publishStatus(StatusPublisher.kt:53)
org.jitsi.jibri.util.ProcessStatePublisher$startProcessAliveChecks$1$$special$$inlined$also$lambda$1.run(ProcessStatePublisher.kt:91)
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-11-17 12:32:20.090 INFO: [49] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: BUSY -> IDLE
2020-11-17 12:32:20.090 FINE: [49] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-17 12:32:20.093 INFO: [49] 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-11-17 12:32:33.955 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-17 12:33:33.955 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-17 12:34:33.955 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-17 12:35:33.955 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-17 12:36:33.955 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-17 12:37:33.955 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status

Your chrome is crashing. What are the resources of the machine where are you trying this?

VPS - 2200MHz, 1024Mb RAM. Isnt it enough?

Can i change video recording resolution or something else. I need to try recording for my project.

P.S.
Jitsi-meet is working good.

So for jitsi-meet on one machine it is recommended to have 8GB of RAM and for running chrome/jibri maybe 4GB will do, but it will be better with 8. And mind that jibri work is cpu intensive and can lead to problems on jitsi-meet side if both are on the same machine and cpu is not enough.

1 Like

Thank you for the advice. Did you search any other errors in attached log?

This is strange. @bbaldino do you have an idea?

@Leksey_Nikitin which version of jibri is that?

And there is one more error about the finalize script, probably your config about it needs attention.

can i just remove the line with finalize script variable?

jibri.jar from 2020 oct 22

Yes.

dpkg -l | grep jibri

8.0-61-g99288dc-1

I deleted finalize script variable. And here is my log files after pushing the record button:

browser.0.txt (403 Bytes) ffmpeg.0.txt (6.5 KB) log.0.txt (33.2 KB)

Start recording and after 5-10 seconds end recording with error. Create json and mp4 (48bytes sized) in recording path.

2020-11-17 17:18:25.783 INFO: [50] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegProcessUpdate() Ffmpeg quit abruptly.  Last output line: frame=   60 fps= 13 q=21.0 size=       0kB time=00:00:01.97 bitrate=   0.2kbits/s speed=0.436x    
2020-11-17 17:18:25.786 INFO: [50] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegStateMachineStateChange() Ffmpeg capturer transitioning from state Running to Error: QuitUnexpectedly SESSION frame=   60 fps= 13 q=21.0 size=       0kB time=00:00:01.97 bitrate=   0.2kbits/s speed=0.436x    
2020-11-17 17:18:25.787 INFO: [50] org.jitsi.jibri.service.impl.FileRecordingJibriService.onServiceStateChange() File recording service transitioning from state Running to Error: QuitUnexpectedly SESSION frame=   60 fps= 13 q=21.0 size=       0kB time=00:00:01.97 bitrate=   0.2kbits/s speed=0.436x    

Do not see any error from ffmpeg … not sure why is that … but there is still the page crash after the ffmpeg error reported … Are you running desktop on the same machine?


Jitsi and Jibri running on VPS in the datacenter. I opened browser from my home computer and then clicked recording button.

Does it work without jibri? If you open 3 tabs, do you see the video?

From the logs above it looks like selenium said the page crashed.

Does it work without jibri? If you open 3 tabs, do you see the video?

Yes, jitsi-meet works well.
It was installed simply and worked very well. As i say before jitsi (jicofo, prosody and jvb) was deployed in the remote virtual private server in the datacenter. I opened some different browser (chrome, edge, firefox) on my PC, created conference and it worked well. I connected from mobile device to this conference too. No problems.

I had problems only with jibri.

P.S.
systemctrl status jibri -> doesnt show any errors.

Including 3 or more participants?

I ordered more powerful VPS today and it worked! I will try different modes tomorrow.
4kernel CPU with 8Gb RAM.

By the way can you add this page https://github.com/jitsi/jibri default jibri.conf with comments about used parameters? Thank you!