Recording Stopped (Recording failed to start)

Hi !

I’ve read almost every topic that deals with this subject and I’m still having trouble recording a meeting.

2020-01-04 18:27:23.596 SEVERE: [3121] 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)

Where do I modify “/path/to/finalize_reecording.sh”?

Thanks !

This is in the config in /etc/jitsi/jibri.

Thanks for the answer, @damencho

I change config.json to:

“finalize_recording_script_path”: “/srv/recordings/finalize_recording.sh”,

And create finalize_recording.sh:

!/bin/bash

RECORDINGS_DIR=$1

echo “This is a dummy finalize script” > /srv/recordings/finalize.out

echo “The script was invoked with recordings directory $RECORDINGS_DIR.” >> /srv/recordings/finalize.out

echo “You should put any finalize logic (renaming, uploading to a service” >> /srv/recordings/finalize.out

echo “or storage provider, etc.) in this script” >> /srv/recordings/finalize.out

exit 0

I restarted jibri service and SEVERE has disappeared but has not worked yet …

In Jibri log this warning error appears:

2020-01-05 20:51:48.908 WARNING: [19] org.jitsi.xmpp.mucclient.MucClient.log() Disabling certificate verification!
2020-01-05 20:51:48.991 WARNING: [1] org.glassfish.jersey.internal.inject.Providers.checkProviderRuntime() A provider org.jitsi.jibri.api.http.HttpApi registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.jitsi.jibri.api.http.HttpApi will be ignored.

Any idea what I’m missing?

Ignore those warnings

But it’s still not working, any idea what it could be?

Clean the logs, try to do a recording which fails and upload the logs here.

Jibri Log:

2020-01-06 19:12:51.273 INFO: [1] org.jitsi.jibri.Main.main() Jibri run with args [--config, /etc/jitsi/jibri/config.json]

2020-01-06 19:12:51.280 INFO: [1] org.jitsi.jibri.Main.main() Using config file /etc/jitsi/jibri/config.json

2020-01-06 19:12:51.280 INFO: [1] org.jitsi.jibri.Main.main() Using port 3333 for internal HTTP API

2020-01-06 19:12:51.280 INFO: [1] org.jitsi.jibri.Main.main() Using port 2222 for the HTTP API

2020-01-06 19:12:52.250 INFO: [1] org.jitsi.jibri.Main.loadConfig() Parsed config:

JibriConfig(recordingDirectory=/srv/recordings, singleUseMode=false, enabledStatsD=true, finalizeRecordingScriptPath=/srv/recordings/finalize_recording.sh, xmppEnvironments=[XmppEnvironmentConfig(name=prod environment, xmppServerHosts=[myjitsidomain.com.br], xmppDomain=myjitsidomain.com.br, controlLogin=XmppCredentials(domain=auth.myjitsidomain.com.br, username=jibri, password=jibriauthpass), controlMuc=XmppMuc(domain=internal.auth.myjitsidomain.com.br, roomName=JibriBrewery, nickname=jibri-nickname), sipControlMuc=null, callLogin=XmppCredentials(domain=recorder.myjitsidomain.com.br, username=recorder, password=jibrirecorderpass), stripFromRoomDomain=conference., usageTimeoutMins=0, trustAllXmppCerts=true)])

2020-01-06 19:12:53.127 WARNING: [1] org.glassfish.jersey.internal.inject.Providers.checkProviderRuntime() A provider org.jitsi.jibri.api.http.internal.InternalHttpApi registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.jitsi.jibri.api.http.internal.InternalHttpApi will be ignored.

2020-01-06 19:12:53.512 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-01-06 19:12:53.515 INFO: [1] org.jitsi.xmpp.mucclient.MucClientManager.log() Setting a presence extension: org.jitsi.xmpp.extensions.jibri.JibriStatusPacketExt@771158fb

2020-01-06 19:12:53.523 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.start() Connecting to xmpp environment on myjitsidomain.com.br with config XmppEnvironmentConfig(name=prod environment, xmppServerHosts=[myjitsidomain.com.br], xmppDomain=myjitsidomain.com.br, controlLogin=XmppCredentials(domain=auth.myjitsidomain.com.br, username=jibri, password=jibriauthpass), controlMuc=XmppMuc(domain=internal.auth.myjitsidomain.com.br, roomName=JibriBrewery, nickname=jibri-nickname), sipControlMuc=null, callLogin=XmppCredentials(domain=recorder.myjitsidomain.com.br, username=recorder, password=jibrirecorderpass), stripFromRoomDomain=conference., usageTimeoutMins=0, trustAllXmppCerts=true)

2020-01-06 19:12:53.524 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-01-06 19:12:53.553 WARNING: [19] org.jitsi.xmpp.mucclient.MucClient.log() Disabling certificate verification!

2020-01-06 19:12:53.610 WARNING: [1] org.glassfish.jersey.internal.inject.Providers.checkProviderRuntime() A provider org.jitsi.jibri.api.http.HttpApi registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.jitsi.jibri.api.http.HttpApi will be ignored.

2020-01-06 19:12:54.612 INFO: [19] org.jitsi.xmpp.mucclient.MucClient.log() [MucClient id=myjitsidomain.com.br hostname=myjitsidomain.com.br] connected

2020-01-06 19:12:55.223 INFO: [19] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.myjitsidomain.com.br

… but strangely jicofo.log and jvb.log are empty

In these logs there is no attempt to do a recording.

Sorry …

2020-01-06 23:41:50.939 INFO: [1] org.jitsi.jibri.Main.main() Jibri run with args [--config, /etc/jitsi/jibri/config.json]

2020-01-06 23:41:50.945 INFO: [1] org.jitsi.jibri.Main.main() Using config file /etc/jitsi/jibri/config.json

2020-01-06 23:41:50.945 INFO: [1] org.jitsi.jibri.Main.main() Using port 3333 for internal HTTP API

2020-01-06 23:41:50.945 INFO: [1] org.jitsi.jibri.Main.main() Using port 2222 for the HTTP API

2020-01-06 23:41:51.842 INFO: [1] org.jitsi.jibri.Main.loadConfig() Parsed config:

JibriConfig(recordingDirectory=/srv/recordings, singleUseMode=false, enabledStatsD=true, finalizeRecordingScriptPath=/srv/recordings/finalize_recording.sh, xmppEnvironments=[XmppEnvironmentConfig(name=prod environment, xmppServerHosts=[myjitsidomain.com.br], xmppDomain=myjitsidomain.com.br, controlLogin=XmppCredentials(domain=auth.myjitsidomain.com.br, username=jibri, password=jibriauthpass), controlMuc=XmppMuc(domain=internal.auth.myjitsidomain.com.br, roomName=JibriBrewery, nickname=jibri-nickname), sipControlMuc=null, callLogin=XmppCredentials(domain=recorder.myjitsidomain.com.br, username=recorder, password=jibrirecorderpass), stripFromRoomDomain=conference., usageTimeoutMins=0, trustAllXmppCerts=true)])

2020-01-06 23:41:52.676 WARNING: [1] org.glassfish.jersey.internal.inject.Providers.checkProviderRuntime() A provider org.jitsi.jibri.api.http.internal.InternalHttpApi registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.jitsi.jibri.api.http.internal.InternalHttpApi will be ignored.

2020-01-06 23:41:53.081 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-01-06 23:41:53.085 INFO: [1] org.jitsi.xmpp.mucclient.MucClientManager.log() Setting a presence extension: org.jitsi.xmpp.extensions.jibri.JibriStatusPacketExt@771158fb

2020-01-06 23:41:53.092 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.start() Connecting to xmpp environment on myjitsidomain.com.br with config XmppEnvironmentConfig(name=prod environment, xmppServerHosts=[myjitsidomain.com.br], xmppDomain=myjitsidomain.com.br, controlLogin=XmppCredentials(domain=auth.myjitsidomain.com.br, username=jibri, password=jibriauthpass), controlMuc=XmppMuc(domain=internal.auth.myjitsidomain.com.br, roomName=JibriBrewery, nickname=jibri-nickname), sipControlMuc=null, callLogin=XmppCredentials(domain=recorder.myjitsidomain.com.br, username=recorder, password=jibrirecorderpass), stripFromRoomDomain=conference., usageTimeoutMins=0, trustAllXmppCerts=true)

2020-01-06 23:41:53.094 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-01-06 23:41:53.122 WARNING: [19] org.jitsi.xmpp.mucclient.MucClient.log() Disabling certificate verification!

2020-01-06 23:41:53.203 WARNING: [1] org.glassfish.jersey.internal.inject.Providers.checkProviderRuntime() A provider org.jitsi.jibri.api.http.HttpApi registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.jitsi.jibri.api.http.HttpApi will be ignored.

2020-01-06 23:41:53.978 INFO: [19] org.jitsi.xmpp.mucclient.MucClient.log() [MucClient id=myjitsidomain.com.br hostname=myjitsidomain.com.br] connected

2020-01-06 23:41:54.556 INFO: [19] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.myjitsidomain.com.br

2020-01-07 01:23:25.090 WARNING: [31] org.jivesoftware.smack.AbstractXMPPConnection.callConnectionClosedOnErrorListener() Connection XMPPTCPConnection[jibri@auth.myjitsidomain.com.br/dad31ea3-1c0a-4121-bb33-054bbd4f2b2f] (0) closed with error

org.jivesoftware.smack.XMPPException$StreamErrorException: system-shutdown You can read more about the meaning of this stream error at http://xmpp.org/rfcs/rfc6120.html#streams-error-conditions

stream:errorReceived SIGTERM</stream:error>

at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1064)

at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:1000)

at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:1016)

at java.lang.Thread.run(Thread.java:748)

2020-01-07 01:23:25.092 INFO: [31] org.jitsi.xmpp.mucclient.MucClient.log() [MucClient id=myjitsidomain.com.br hostname=myjitsidomain.com.br] closed on error:

org.jivesoftware.smack.XMPPException$StreamErrorException: system-shutdown You can read more about the meaning of this stream error at http://xmpp.org/rfcs/rfc6120.html#streams-error-conditions

stream:errorReceived SIGTERM</stream:error>

at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1064)

at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:1000)

at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:1016)

at java.lang.Thread.run(Thread.java:748)

2020-01-07 01:23:40.364 INFO: [239] org.jitsi.xmpp.mucclient.MucClient.log() [MucClient id=myjitsidomain.com.br hostname=myjitsidomain.com.br] reconnection failed

2020-01-07 01:23:52.941 INFO: [239] org.jitsi.xmpp.mucclient.MucClient.log() [MucClient id=myjitsidomain.com.br hostname=myjitsidomain.com.br] connected

2020-01-07 01:23:53.246 INFO: [239] org.jitsi.xmpp.mucclient.MucClient.log() Leaving a MUC we already occupy.

2020-01-07 01:23:53.389 INFO: [239] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.myjitsidomain.com.br

2020-01-07 01:25:07.808 INFO: [247] org.jitsi.jibri.api.xmpp.XmppApi.handleJibriIq() Received JibriIq from environment [MucClient id=myjitsidomain.com.br hostname=myjitsidomain.com.br]

2020-01-07 01:25:07.809 INFO: [247] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Received start request

2020-01-07 01:25:07.812 INFO: [248] org.jitsi.jibri.api.xmpp.XmppApi.run() Starting service

2020-01-07 01:25:07.813 INFO: [247] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Sending ‘pending’ response to start IQ

2020-01-07 01:25:07.899 INFO: [248] org.jitsi.jibri.api.xmpp.XmppApi.handleStartService() Parsed call url info: CallUrlInfo(baseUrl=https://myjitsidomain.com.br, callName=123, urlParams=)

2020-01-07 01:25:07.900 INFO: [248] org.jitsi.jibri.JibriManager.startFileRecording() Starting a file recording with params: FileRecordingRequestParams(callParams=CallParams(callUrlInfo=CallUrlInfo(baseUrl=https://myjitsidomain.com.br, callName=123, urlParams=)), sessionId=tugpiioqwprjvjwz, callLoginParams=XmppCredentials(domain=recorder.myjitsidomain.com.br, username=recorder, password=jibrirecorderpass)) finalize script path: /srv/recordings/finalize_recording.sh and recordings directory: /srv/recordings

2020-01-07 01:25:09.300 INFO: [248] org.openqa.selenium.remote.ProtocolHandshake.createSession() Detected dialect: OSS

2020-01-07 01:25:09.351 INFO: [248] org.jitsi.jibri.selenium.JibriSelenium.() Starting empty call check with a timeout of PT30S

2020-01-07 01:25:09.371 FINE: [248] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.() Detected os as OS: LINUX

2020-01-07 01:25:09.381 INFO: [248] org.jitsi.jibri.service.impl.FileRecordingJibriService.() Writing recording to /srv/recordings/tugpiioqwprjvjwz

2020-01-07 01:25:09.383 FINE: [248] org.jitsi.jibri.statsd.JibriStatsDClient.incrementCounter() Incrementing statsd counter: start:recording

2020-01-07 01:25:09.384 INFO: [248] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: IDLE -> BUSY

2020-01-07 01:25:09.387 INFO: [248] 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-01-07 01:25:09.388 INFO: [248] org.jitsi.xmpp.mucclient.MucClientManager.log() Setting a presence extension: org.jitsi.xmpp.extensions.jibri.JibriStatusPacketExt@49a5bf36

2020-01-07 01:25:11.634 FINE: [258] org.jitsi.jibri.selenium.pageobjects.CallPage.visit() Visiting url https://myjitsidomain.com.br/123#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-01-07 01:25:14.149 INFO: [258] org.jitsi.jibri.selenium.pageobjects.CallPage.visit() Waited 1551 milliseconds for call page to load

2020-01-07 01:25:14.180 INFO: [258] org.jitsi.jibri.selenium.JibriSelenium.onSeleniumStateChange() Transitioning from state Starting up to Running

2020-01-07 01:25:14.181 INFO: [258] org.jitsi.jibri.service.impl.FileRecordingJibriService.invoke() Selenium joined the call, starting the capturer

2020-01-07 01:25:14.225 INFO: [258] 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:cloop -acodec aac -strict -2 -ar 44100 -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/tugpiioqwprjvjwz/123_2020-01-07-01-25-09.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:cloop, -acodec, aac, -strict, -2, -ar, 44100, -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/tugpiioqwprjvjwz/123_2020-01-07-01-25-09.mp4])

2020-01-07 01:25:19.240 FINE: [259] org.jitsi.jibri.util.ProcessStatePublisher.ffmpeg.invoke() Process ffmpeg hasn’t written in 2 seconds, publishing periodic update

2020-01-07 01:25:19.241 INFO: [262] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegProcessUpdate() Ffmpeg quit abruptly. Last output line: plug:cloop: Input/output error

2020-01-07 01:25:19.242 INFO: [262] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegStateMachineStateChange() Ffmpeg capturer transitioning from state Starting up to Error: SESSION Ffmpeg failed to start

2020-01-07 01:25:19.242 INFO: [262] org.jitsi.jibri.service.impl.FileRecordingJibriService.onServiceStateChange() File recording service transitioning from state Starting up to Error: SESSION Ffmpeg failed to start

2020-01-07 01:25:19.243 INFO: [262] org.jitsi.jibri.api.xmpp.XmppApi.invoke() Current service had an error, sending error iq

2020-01-07 01:25:19.244 FINE: [262] org.jitsi.jibri.statsd.JibriStatsDClient.incrementCounter() Incrementing statsd counter: stop:recording

2020-01-07 01:25:19.245 INFO: [262] org.jitsi.jibri.JibriManager.stopService() Stopping the current service

2020-01-07 01:25:19.246 INFO: [262] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Stopping capturer

2020-01-07 01:25:19.246 INFO: [262] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.stop() Stopping ffmpeg process

2020-01-07 01:25:19.258 INFO: [262] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.stop() ffmpeg exited with value 1

2020-01-07 01:25:19.260 INFO: [262] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Quitting selenium

2020-01-07 01:25:19.346 INFO: [262] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Participants in this recording:

2020-01-07 01:25:19.505 INFO: [262] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Got 17 log entries for type browser

2020-01-07 01:25:19.620 INFO: [262] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Got 650 log entries for type driver

2020-01-07 01:25:19.845 INFO: [262] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Got 0 log entries for type client

2020-01-07 01:25:19.846 INFO: [262] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Leaving web call

2020-01-07 01:25:20.048 INFO: [262] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Quitting chrome driver

2020-01-07 01:25:20.122 INFO: [262] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Chrome driver quit

2020-01-07 01:25:20.122 INFO: [262] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Finalizing the recording

2020-01-07 01:25:20.125 INFO: [262] org.jitsi.jibri.service.impl.FileRecordingJibriService.finalize() Recording finalize script finished with exit value 0

2020-01-07 01:25:20.126 INFO: [262] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: BUSY -> IDLE

2020-01-07 01:25:20.126 INFO: [262] 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-01-07 01:25:20.127 INFO: [262] org.jitsi.xmpp.mucclient.MucClientManager.log() Setting a presence extension: org.jitsi.xmpp.extensions.jibri.JibriStatusPacketExt@6d96cf8b

Here is the error you get. Which version of jibri are you running? Latest from stable or latest from unstable?

Latest from unstable

Yep, I think it is a known bug, sorry. Will let you know once it is fixed.

Is there a version where we don’t have this bug?

The stable repo (not sure whether downgrade will update .asoundrc file) or if you just change the .asoundrc in /home/jibri to be the one before this change: https://github.com/jitsi/jibri/commit/5a71969bd770dca7c54cdf6a14567c902797a377
You see how in this commit cloop was deleted and we forgot to fix it in the code.

It is now fixed, the build will be out in unstable in few minutes. Please, report whether that fixes your problem, thanks!

I need to reinstall, right? Is there any way to sync only changed files?

Just need to update:

apt-get update
apt-get install jibri

will do the trick.

Thanks @damencho, but still the same error:

NFO: [262] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegProcessUpdate() Ffmpeg quit abruptly. Last output line: plug:cloop: Input/output error

Hum, the new version should not use cloop at all, strange.

I upgraded, stopped Jibri, jicofo and jvb, restarted prosody, started jvb, jicofo and Jibri in that order … ‘-’