Jibri not work

Hello! I have problem with Jibri !!

when click on recording have notification record not start
my jicofo.log have the error
:Jicofo 2020-11-04 14:21:45.443 SEVERE: [66] org.jitsi.jicofo.recording.jibri.JibriSession.log() Unable to find an available Jibri, can’t start
Jicofo 2020-11-04 14:21:45.445 INFO: [66] org.jitsi.jicofo.recording.jibri.JibriRecorder.log() Failed to start a Jibri session, no Jibris available
Jicofo 2020-11-04 14:24:28.725 INFO: [65] org.jitsi.jicofo.ChatRoomRoleAndPresence.log() Chat room event ChatRoomMemberPresenceChangeEvent[type=MemberLeft sourceRoom=org.jitsi.impl.protocol.xmpp.ChatRoomImpl@481587ad member=ChatMember[siptest@conference.meet.igocctv.com/328d15c3, jid: 328d15c3-47e7-4e15-bf65-52eceb1c20a4@guest.meet.igocctv.com/97d80dd4-a482-4f7f-b35f-491657853c98]@1893992443]

MY log.0.txt only one line:
2020-11-04 14:13:39.267 INFO: [1] org.jitsi.jibri.Main.handleCommandLineArgs() Jibri run with args [–config, /etc/jitsi/jibri/config.json]

Any suggest?

Any help on what I could be doing wrong?
jibri log:
2020-11-04 14:13:39.267 INFO: [1] org.jitsi.jibri.Main.handleCommandLineArgs() Jibri run with args [–config, /etc/jitsi/jibri/config.json]

jicofo log catch error:
:Jicofo 2020-11-04 14:21:45.443 SEVERE: [66] org.jitsi.jicofo.recording.jibri.JibriSession.log() Unable to find an available Jibri, can’t start
Jicofo 2020-11-04 14:21:45.445 INFO: [66] org.jitsi.jicofo.recording.jibri.JibriRecorder.log() Failed to start a Jibri session, no Jibris available
Jicofo 2020-11-04 14:24:28.725 INFO: [65] org.jitsi.jicofo.ChatRoomRoleAndPresence.log() Chat room event ChatRoomMemberPresenceChangeEvent[type=MemberLeft sourceRoom=org.jitsi.impl.protocol.xmpp.ChatRoomImpl@481587ad member=ChatMember[siptest@conference.meet.igocctv.com/328d15c3, jid: 328d15c3-47e7-4e15-bf65-52eceb1c20a4@guest.meet.igocctv.com/97d80dd4-a482-4f7f-b35f-491657853c98]@1893992443]

What’s your jibri.conf like? Check to make sure the accounts you’ve created are correctly listed in the config with the right passwords.

What does your Jibri log show?

jibri log: only one line: log.0.txt

2020-11-04 14:13:39.267 INFO: [1] org.jitsi.jibri.Main.handleCommandLineArgs() Jibri run with args [–config, /etc/jitsi/jibri/config.json]
my jibri.conf:
jibri {
// A unique identifier for this Jibri
// TODO: eventually this will be required with no default
id = “”
// Whether or not Jibri should return to idle state after handling
// (successfully or unsuccessfully) a request. A value of ‘true’
// here means that a Jibri will NOT return back to the IDLE state
// and will need to be restarted in order to be used again.
single-use-mode = false
api {
http {
external-api-port = 2222
internal-api-port = 3333
}
xmpp {
// See example_xmpp_envs.conf for an example of what is expected here
environments = [
“xmpp_server_hosts”: [
“127.0.0.1”
],
“xmpp_domain”: “meet.igocctv.com”,
“control_login”: {
“domain”: “auth.meet.igocctv.com”,
“username”: “jibri”,
“password”: “myjibri”
},
// 注意,如果要配置多个Jibri,同时录制多个房间,这里的用户名不能一致
“control_muc”: {
“domain”: “internal.auth.meet.igocctv.com”,
“room_name”: “JibriBrewery”,
“nickname”: “jibri”
},
“call_login”: {
“domain”: “recorder.meet.igocctv.com”,
“username”: “recorder”,
“password”: “myjibrirec”
},
]
}
}
recording {
recordings-directory = “/srv/recordings”
# TODO: make this an optional param and remove the default
finalize-script = “”
}
streaming {
// A list of regex patterns for allowed RTMP URLs. The RTMP URL used
// when starting a stream must match at least one of the patterns in
// this list.
rtmp-allow-list = [
// By default, all services are allowed
“.*”
]
}
chrome {
// The flags which will be passed to chromium when launching
flags = [
“–use-fake-ui-for-media-stream”,
“–start-maximized”,
“–kiosk”,
“–enabled”,
“–disable-infobars”,
“–autoplay-policy=no-user-gesture-required”
]
}
stats {
enable-stats-d = true
}
webhook {
// A list of subscribers interested in receiving webhook events
subscribers =
}
jwt-info {
jwt-info {
// The path to a .pem file which will be used to sign JWT tokens used in webhook
// requests. If not set, no JWT will be added to webhook requests.
# signing-key-path = “/path/to/key.pem”

// The kid to use as part of the JWT
# kid = "key-id"

// The issuer of the JWT
# issuer = "issuer"

// The audience of the JWT
# audience = "audience"

// The TTL of each generated JWT.  Can't be less than 10 minutes.
# ttl = 1 hour

}
call-status-checks {
// If all clients have their audio and video muted and if Jibri does not
// detect any data stream (audio or video) comming in, it will stop
// recording after NO_MEDIA_TIMEOUT expires.
no-media-timeout = 30 seconds

// If all clients have their audio and video muted, Jibri consideres this
// as an empty call and stops the recording after ALL_MUTED_TIMEOUT expires.
all-muted-timeout = 10 minutes

// When detecting if a call is empty, Jibri takes into consideration for how
// long the call has been empty already. If it has been empty for more than
// DEFAULT_CALL_EMPTY_TIMEOUT, it will consider it empty and stop the recording.
default-call-empty-timeout = 30 seconds

}
}

my config.json:

“recording_directory”: “/srv/recordings”, / /录制文件
“finalize_recording_script_path”: “”, //录制完成后启动的shell脚本,官方这里写了一串路径,但是我没有找到他,所以直接取消了

//刚刚上面配置Prosody的配置
“xmpp_server_hosts”: [
“127.0.0.1”
],
“xmpp_domain”: “meet.igocctv.com”,
“control_login”: {
“domain”: “auth.meet.igocctv.com”,
“username”: “jibri”,
“password”: “myjibri”
},
// 注意,如果要配置多个Jibri,同时录制多个房间,这里的用户名不能一致
“control_muc”: {
“domain”: “internal.auth.meet.igocctv.com”,
“room_name”: “JibriBrewery”,
“nickname”: “jibri”
},
“call_login”: {
“domain”: “recorder.meet.igocctv.com”,
“username”: “recorder”,
“password”: “myjibrirec”
},

Your syntax here is wrong. Remove the quotes from the properties (e.g. “control_login” should just be control-login AND “xmpp_server_hosts” should just be xmpp-server-hosts - hyphen, not underscore). Refer back to the example file to correct your syntax, there’s a lot of errors.

Also, confirm that you have the right usernames and passwords as registered in prosody.

Thank Freddie.
I have do it:
jibri.conf:
jibri {
// A unique identifier for this Jibri
// TODO: eventually this will be required with no default
id = “”
// Whether or not Jibri should return to idle state after handling
// (successfully or unsuccessfully) a request. A value of ‘true’
// here means that a Jibri will NOT return back to the IDLE state
// and will need to be restarted in order to be used again.
single-use-mode = false
api {
http {
external-api-port = 2222
internal-api-port = 3333
}
xmpp {
// See example_xmpp_envs.conf for an example of what is expected here
environments = [
xmpp_server_hosts: [
“127.0.0.1”
],
xmpp_domain: “meet.igocctv.com”,
control_login: {
domain: “auth.meet.igocctv.com”,
username: “jibri”,
password: “myjibri”
},
// 注意,如果要配置多个Jibri,同时录制多个房间,这里的用户名不能一致
control_muc: {
domain: “internal.auth.meet.igocctv.com”,
room_name: “JibriBrewery”,
nickname: “jibri”
},
call_login: {
domain: “recorder.meet.igocctv.com”,
username: “recorder”,
password: “myjibrirec”
},
]
}
}
recording {
recordings-directory = “/srv/recordings”
# TODO: make this an optional param and remove the default
finalize-script = “”
}
streaming {
// A list of regex patterns for allowed RTMP URLs. The RTMP URL used
// when starting a stream must match at least one of the patterns in
// this list.
rtmp-allow-list = [
// By default, all services are allowed
“.*”
]
}
chrome {
// The flags which will be passed to chromium when launching
flags = [
“–use-fake-ui-for-media-stream”,
“–start-maximized”,
“–kiosk”,
“–enabled”,
“–disable-infobars”,
“–autoplay-policy=no-user-gesture-required”
]
}
stats {
enable-stats-d = true
}
webhook {
// A list of subscribers interested in receiving webhook events
subscribers =
}
jwt-info {
// The path to a .pem file which will be used to sign JWT tokens used in webhook
// requests. If not set, no JWT will be added to webhook requests.
# signing-key-path = “/path/to/key.pem”

// The kid to use as part of the JWT
# kid = "key-id"

// The issuer of the JWT
# issuer = "issuer"

// The audience of the JWT
# audience = "audience"

// The TTL of each generated JWT.  Can't be less than 10 minutes.
# ttl = 1 hour

}
call-status-checks {
// If all clients have their audio and video muted and if Jibri does not
// detect any data stream (audio or video) comming in, it will stop
// recording after NO_MEDIA_TIMEOUT expires.
no-media-timeout = 30 seconds

// If all clients have their audio and video muted, Jibri consideres this
// as an empty call and stops the recording after ALL_MUTED_TIMEOUT expires.
all-muted-timeout = 10 minutes

// When detecting if a call is empty, Jibri takes into consideration for how
// long the call has been empty already. If it has been empty for more than
// DEFAULT_CALL_EMPTY_TIMEOUT, it will consider it empty and stop the recording.
default-call-empty-timeout = 30 seconds

}
}

config.json:

recording_directory: “/srv/recordings”, / /录制文件
finalize_recording_script_path: “”, //录制完成后启动的shell脚本,官方这里写了一串路径,但是我没有找到他,所以直接取消了

//刚刚上面配置Prosody的配置
xmpp_server_hosts: [
“127.0.0.1”
],
xmpp_domain: “meet.igocctv.com”,
control_login: {
domain: “auth.meet.igocctv.com”,
username: “jibri”,
password: “myjibri”
},
// 注意,如果要配置多个Jibri,同时录制多个房间,这里的用户名不能一致
control_muc: {
domain: “internal.auth.meet.igocctv.com”,
room_name: “JibriBrewery”,
nickname: “jibri”
},
call_login: {
domain: “recorder.meet.igocctv.com”,
username: “recorder”,
password: “myjibrirec”
},

jibri log: only one line: log.0.txt
2020-11-06 11:55:09.584 INFO: [1] org.jitsi.jibri.Main.handleCommandLineArgs() Jibri run with args [–config, /etc/jitsi/jibri/config.json]

jicofo log:
Jicofo 2020-11-06 11:56:35.672 INFO: [65] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Member siptest@conference.meet.igocctv.com/f54a195a joined.
Jicofo 2020-11-06 11:56:42.544 SEVERE: [333] org.jitsi.jicofo.recording.jibri.JibriSession.log() Unable to find an available Jibri, can’t start
Jicofo 2020-11-06 11:56:42.545 INFO: [333] org.jitsi.jicofo.recording.jibri.JibriRecorder.log() Failed to start a Jibri session, no Jibris available
Jicofo 2020-11-06 14:42:47.352 INFO: [65] org.jitsi.jicofo.ChatRoomRoleAndPresence.log() Chat room event ChatRoomMemberPresenceChangeEvent[type=MemberLeft sourceRoom=org.jitsi.impl.protocol.xmpp.ChatRoomImpl@6d9382be member=ChatMember[siptest@conference.meet.igocctv.com/f54a195a, jid: f54a195a-fb8b-4516-ab65-8ec3a21478ad@guest.meet.igocctv.com/908dbab8-f420-4043-9565-240cf5eb3fbf]@84180382]

Any help on what I could be doing wrong?

You’re still calling the properties wrongly. For instance:

should be

xmpp-server-hosts: [

Note the dashes in-between. If the property name is wrong, the call for value will fail. Take a lot at this migration guide for Jibri. Look at the lower part of the page where it gives an example of jibri.conf.

Thank Freddie.
jibri {
// A unique identifier for this Jibri
// TODO: eventually this will be required with no default
id = “”
// Whether or not Jibri should return to idle state after handling
// (successfully or unsuccessfully) a request. A value of ‘true’
// here means that a Jibri will NOT return back to the IDLE state
// and will need to be restarted in order to be used again.
single-use-mode = false
api {
http {
external-api-port = 2222
internal-api-port = 3333
}
xmpp {
// See example_xmpp_envs.conf for an example of what is expected here
environments = [
xmpp_server_hosts:“127.0.0.1”,
xmpp_domain: “meet.igocctv.com”,
control_login: {
domain: “auth.meet.igocctv.com”,
username: “jibri”,
password: “myjibri”
},
// 注意,如果要配置多个Jibri,同时录制多个房间,这里的用户名不能一致
control_muc: {
domain: “internal.auth.meet.igocctv.com”,
room_name: “JibriBrewery”,
nickname: “jibri”
},

Is right?

Nooooo… you’re not looking at the guide. Here’s the example I was referring you to:

jibri {
    api {
        xmpp {
            environments = [
                {
                    name = <String>
                    xmpp-server-hosts = <List<String>>
                    xmpp-domain = <String>

                    control-muc {
                        domain = <String>
                        room-name = <String>
                        nickname = <String>
                    }

                    control-login {
                        domain = <String>
                        username = <String>
                        password = <String>
                    }

                    sip-control-muc {
                        domain = <String>
                        room-name = <String>
                        nickname = <String>
                    }

                    call-login {
                        domain = <String>
                        username = <String>
                        password = <String>
                    }

                    strip-from-room-domain = <String>
                    usage-timeout = <Duration String i.e. '5 minutes' or '1 hour'>

                    trust-all-xmpp-certs = <boolean>
                },
                { <more> }
            ]
        }
    }
}

Use this one and fill in your appropriate values.

Thank Freddie !
I have changed jibri.conf.
The jibri log: catch error:

2020-11-07 10:59:09.840 INFO: [89] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Received start request, starting service
2020-11-07 10:59:09.983 INFO: [89] org.jitsi.jibri.api.xmpp.XmppApi.handleStartService() Parsed call url info: CallUrlInfo(baseUrl=https://meet.igocctv.com/conference, callName=siptest, urlParams=)
2020-11-07 10:59:09.985 INFO: [89] org.jitsi.jibri.JibriManager.startFileRecording() Starting a file recording with params: FileRecordingRequestParams(callParams=CallParams(callUrlInfo=CallUrlInfo(baseUrl=https://meet.igocctv.com/conference, callName=siptest, urlParams=)), sessionId=tfflqozmombwoefn, callLoginParams=XmppCredentials(domain=recorder.meet.igocctv.com, username=recorder, password=myjibrirec))
2020-11-07 10:59:10.009 FINE: [89] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key ‘jibri.chrome.flags’ from source ‘config’ as type kotlin.collections.List<kotlin.String>
2020-11-07 10:59:10.010 FINE: [89] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key ‘jibri.chrome.flags’ from source ‘config’ as type kotlin.collections.List<kotlin.String>
2020-11-07 10:59:10.029 SEVERE: [89] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Error starting Jibri service : java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html with stack:
com.google.common.base.Preconditions.checkState(Preconditions.java:847)
org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:124)
org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:33)
org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:139)
org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:335)
org.jitsi.jibri.selenium.JibriSelenium.(JibriSelenium.kt:147)
org.jitsi.jibri.selenium.JibriSelenium.(JibriSelenium.kt:120)
org.jitsi.jibri.service.impl.FileRecordingJibriService.(FileRecordingJibriService.kt:101)
org.jitsi.jibri.JibriManager.startFileRecording(JibriManager.kt:140)

Any help on what I could be doing wrong?

The jibri log:

2020-11-07 14:38:06.322 INFO: [54] org.jitsi.xmpp.mucclient.MucClient.log() Logging in.
2020-11-07 14:38:06.456 INFO: [54] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.meet.igocctv.com
2020-11-07 14:38:06.457 INFO: [54] org.jitsi.xmpp.mucclient.MucClient.log() Leaving a MUC we already occupy.
2020-11-07 14:38:06.470 INFO: [54] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.meet.igocctv.com
2020-11-07 14:39:05.399 FINE: [42] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-07 14:40:05.399 FINE: [42] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-07 14:40:34.707 INFO: [89] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Received start request, starting service
2020-11-07 14:38:06.456 INFO: [54] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.meet.igocctv.com
2020-11-07 14:38:06.457 INFO: [54] org.jitsi.xmpp.mucclient.MucClient.log() Leaving a MUC we already occupy.
2020-11-07 14:38:06.470 INFO: [54] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.meet.igocctv.com
2020-11-07 14:39:05.399 FINE: [42] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-07 14:40:05.399 FINE: [42] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-07 14:40:34.707 INFO: [89] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Received start request, starting service
Command duration or timeout: 78 milliseconds
Build info: version: ‘unknown’, revision: ‘unknown’, time: ‘unknown’
System info: host: ‘iZbp1i53ubqg3vz9vlay70Z’, ip: ‘10.27.89.163’, os.name: ‘Linux’, os.arch: ‘amd64’, os.version: ‘4.4.0-185-generic’, java.version: ‘9-internal’
Driver info: driver.version: ChromeDriver with stack:
sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.base@9-internal/Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(java.base@9-internal/NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(java.base@9-internal/DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(java.base@9-internal/Constructor.java:453)
org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.java:53)
org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91)
org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
java.util.stream.ReferencePipeline$3$1.accept(java.base@9-internal/ReferencePipeline.java:195)
java.util.Spliterators$ArraySpliterator.tryAdvance(java.base@9-internal/Spliterators.java:958)
2020-11-07 14:38:06.322 INFO: [54] org.jitsi.xmpp.mucclient.MucClient.log() Connected.
2020-11-07 14:38:06.322 INFO: [54] org.jitsi.xmpp.mucclient.MucClient.log() Logging in.
2020-11-07 14:38:06.456 INFO: [54] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.meet.igocctv.com
2020-11-07 14:38:06.457 INFO: [54] org.jitsi.xmpp.mucclient.MucClient.log() Leaving a MUC we already occupy.
2020-11-07 14:38:06.470 INFO: [54] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.meet.igocctv.com
2020-11-07 14:39:05.399 FINE: [42] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-07 14:40:05.399 FINE: [42] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-07 14:40:34.707 INFO: [89] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Received start request, starting service
Command duration or timeout: 78 milliseconds
Build info: version: ‘unknown’, revision: ‘unknown’, time: ‘unknown’
System info: host: ‘iZbp1i53ubqg3vz9vlay70Z’, ip: ‘10.27.89.163’, os.name: ‘Linux’, os.arch: ‘amd64’, os.version: ‘4.4.0-185-generic’, java.version: ‘9-internal’
Driver info: driver.version: ChromeDriver with stack:
sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.base@9-internal/Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(java.base@9-internal/NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(java.base@9-internal/DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(java.base@9-internal/Constructor.java:453)
org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.java:53)
org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91)
org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
java.util.stream.ReferencePipeline$3$1.accept(java.base@9-internal/ReferencePipeline.java:195)
java.util.Spliterators$ArraySpliterator.tryAdvance(java.base@9-internal/Spliterators.java:958)
java.util.stream.ReferencePipeline.forEachWithCancel(java.base@9-internal/ReferencePipeline.java:127)
java.util.stream.AbstractPipeline.copyIntoWithCancel(java.base@9-internal/AbstractPipeline.java:502)
java.util.stream.AbstractPipeline.copyInto(java.base@9-internal/AbstractPipeline.java:488)
java.util.stream.AbstractPipeline.wrapAndCopyInto(java.base@9-internal/AbstractPipeline.java:474)
java.util.stream.FindOps$FindOp.evaluateSequential(java.base@9-internal/FindOps.java:152)
java.util.stream.AbstractPipeline.evaluate(java.base@9-internal/AbstractPipeline.java:234)
java.util.stream.ReferencePipeline.findFirst(java.base@9-internal/ReferencePipeline.java:476)
org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:207)
org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:130)
org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:181)
org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:168)
org.jitsi.jibri.selenium.JibriSelenium.(JibriSelenium.kt:151)
org.jitsi.jibri.selenium.JibriSelenium.(JibriSelenium.kt:120)
org.jitsi.jibri.service.impl.FileRecordingJibriService.(FileRecordingJibriService.kt:101)
org.jitsi.jibri.JibriManager.startFileRecording(JibriManager.kt:140)
org.jitsi.jibri.api.xmpp.XmppApi.handleStartService(XmppApi.kt:293)
org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq(XmppApi.kt:194)
org.jitsi.jibri.api.xmpp.XmppApi.handleJibriIq(XmppApi.kt:167)
org.jitsi.jibri.api.xmpp.XmppApi.handleIq(XmppApi.kt:149)
org.jitsi.xmpp.mucclient.MucClient.handleIq(MucClient.java:569)
org.jitsi.xmpp.mucclient.MucClient.access$800(MucClient.java:50)
org.jitsi.xmpp.mucclient.MucClient$2.handleIQRequest(MucClient.java:533)
org.jivesoftware.smack.AbstractXMPPConnection$4.run(AbstractXMPPConnection.java:1188)
java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@9-internal/ThreadPoolExecutor.java:1158)
java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@9-internal/ThreadPoolExecutor.java:632)
java.lang.Thread.run(java.base@9-internal/Thread.java:804)

Any help on what I could be doing wrong?

I think the wr

2020-11-08 12:58:05.104 SEVERE: [91] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Error starting Jibri service : org.openqa.selenium.WebDriverException: unknown error: cannot find Chrome binary
(Driver info: chromedriver=87.0.4280.20 (c99e81631faa0b2a448e658c0dbd8311fb04ddbd-refs/branch-heads/4280@{#355}),platform=Linux 4.4.0-185-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 69 milliseconds
Build info: version: ‘unknown’, revision: ‘unknown’, time: ‘unknown’
System info: host: ‘iZbp1i53ubqg3vz9vlay70Z’, ip: ‘10.27.89.163’, os.name: ‘Linux’, os.arch: ‘amd64’, os.version: ‘4.4.0-185-generic’, java.version: ‘9-internal’
Driver info: driver.version: ChromeDriver with stack:
sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.base@9-internal/Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(java.base@9-internal/NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(java.base@9-internal/DelegatingConstructorAccessorImpl.java:45)

any suggest?

Dd you install Chrome? How did you install Chromedriver? It’s saying it cannot find Chrome binary.

First, try these commands (installs latest Chrome):

curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add
echo “deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main” > /etc/apt/sources.list.d/google-chrome.list
apt update && apt install google-chrome-stable -y

Then install Chromedriver:

CHROME_DRIVER_VERSION=curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE
wget -N http://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip -P ~/
unzip ~/chromedriver_linux64.zip -d ~/
rm ~/chromedriver_linux64.zip
mv -f ~/chromedriver /usr/local/bin/chromedriver
chown root:root /usr/local/bin/chromedriver
chmod 0755 /usr/local/bin/chromedriver

Thank Freddie!
Those commands not work.

I download chromedriver_linux64.zip from from http://chromedriver.storage.googleapis.com/index.html.
than
unzip chromedriver_linux64.zip
rm chromedriver_linux64.zip
mv -f chromedriver /usr/local/bin/chromedriver
chown root:root /usr/local/bin/chromedriver
chmod 0755 /usr/local/bin/chromedriver

any suggest?

Did you install Chrome?

Thank Freddie! I install it.
The jibri not work still:
jibri log:

2020-11-08 16:04:06.993 FINE: [1] org.jitsi.jibri.config.debug() LambdaSupplier: Trying to retrieve value via JibriConfig::xmppEnvironments
2020-11-08 16:04:06.994 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via LambdaSupplier: ‘JibriConfig::xmppEnvironments’: org.jitsi.metaconfig.ConfigException$UnableToRetrieve$NotFound: Considering empty XMPP envs list as not found
2020-11-08 16:04:06.994 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key ‘jibri.api.xmpp.environments’ from source ‘config’ as type kotlin.collections.List<com.typesafe.config.Config>
2020-11-08 16:04:07.005 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key ‘jibri.api.xmpp.environments’ from source ‘config’ as type kotlin.collections.List<com.typesafe.config.Config>
2020-11-08 16:04:07.008 FINE: [1] org.jitsi.jibri.config.debug() TypeConvertingSupplier: Converted value type from ConfigSourceSupplier: key: ‘jibri.api.xmpp.environments’, type: ‘kotlin.collections.List<com.typesafe.config.Config>’, source: ‘config’
2020-11-08 16:04:07.008 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: value found via TypeConvertingSupplier: converting value from ConfigSourceSupplier: key: ‘jibri.api.xmpp.environments’, type: ‘kotlin.collections.List<com.typesafe.config.Config>’, source: ‘config’
2020-11-08 16:04:07.265 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-08 16:04:07.284 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.start() Connecting to xmpp environment on 127.0.0.1 with config XmppEnvironmentConfig(name=test, xmppServerHosts=[127.0.0.1], xmppDomain=meet.igocctv.com, controlLogin=XmppCredentials(domain=auth.meet.igocctv.com, username=jibri, password=myjibri), controlMuc=XmppMuc(domain=internal.auth.meet.igocctv.com, roomName=JibriBrewery, nickname=jibri), sipControlMuc=XmppMuc(domain=internal.auth.meet.igocctv.com, roomName=JibriBrewery, nickname=jibri), callLogin=XmppCredentials(domain=recorder.meet.igocctv.com, username=recorder, password=myjibrirec), stripFromRoomDomain=, usageTimeoutMins=5, trustAllXmppCerts=true)
2020-11-08 16:04:07.285 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-08 16:04:07.307 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: checking for value via suppliers:
ConfigSourceSupplier: key: ‘http_api_port’, type: ‘kotlin.Int’, source: ‘command line args’
ConfigSourceSupplier: key: ‘jibri.api.http.external-api-port’, type: ‘kotlin.Int’, source: ‘config’
2020-11-08 16:04:07.307 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key ‘http_api_port’ from source ‘command line args’ as type kotlin.Int
2020-11-08 16:04:07.308 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via ConfigSourceSupplier: key: ‘http_api_port’, type: ‘kotlin.Int’, source: ‘command line args’: org.jitsi.metaconfig.ConfigException$UnableToRetrieve$NotFound: not found
2020-11-08 16:04:07.308 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key ‘jibri.api.http.external-api-port’ from source ‘config’ as type kotlin.Int
2020-11-08 16:04:07.309 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key ‘jibri.api.http.external-api-port’ from source ‘config’ as type kotlin.Int
2020-11-08 16:04:07.310 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: value found via ConfigSourceSupplier: key: ‘jibri.api.http.external-api-port’, type: ‘kotlin.Int’, source: ‘config’
2020-11-08 16:04:07.310 INFO: [1] org.jitsi.jibri.Main.main() Using port 2222 for HTTP API
2020-11-08 16:04:07.321 WARNING: [54] org.jitsi.xmpp.mucclient.MucClient.log() Disabling certificate verification!
2020-11-08 16:05:23.944 INFO: [87] org.openqa.selenium.remote.ProtocolHandshake.createSession() Detected dialect: OSS
2020-11-08 16:05:23.982 INFO: [87] org.jitsi.jibri.selenium.JibriSelenium.() Starting empty call check with a timeout of PT30S
2020-11-08 16:05:24.023 FINE: [87] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.() Detected os as OS: LINUX
2020-11-08 16:05:24.049 FINE: [87] org.jitsi.jibri.config.debug() FallbackSupplier: checking for value via suppliers:
LambdaSupplier: ‘JibriConfig::recordingDirectory’
ConfigSourceSupplier: key: ‘jibri.recording.recordings-directory’, type: ‘kotlin.String’, source: ‘config’
2020-11-08 16:05:24.049 FINE: [87] org.jitsi.jibri.config.debug() LambdaSupplier: Trying to retrieve value via JibriConfig::recordingDirectory
2020-11-08 16:05:24.051 FINE: [87] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via LambdaSupplier: ‘JibriConfig::recordingDirectory’: org.jitsi.metaconfig.ConfigException$UnableToRetrieve$Error: class kotlin.KotlinNullPointerException
2020-11-08 16:05:24.051 FINE: [87] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key ‘jibri.recording.recordings-directory’ from source ‘config’ as type kotlin.String
2020-11-08 16:05:24.056 FINE: [87] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key ‘jibri.recording.recordings-directory’ from source ‘config’ as type kotlin.String
2020-11-08 16:05:24.061 FINE: [87] org.jitsi.jibri.config.debug() FallbackSupplier: value found via ConfigSourceSupplier: key: ‘jibri.recording.recordings-directory’, type: ‘kotlin.String’, source: ‘config’
2020-11-08 16:05:24.062 FINE: [87] org.jitsi.jibri.config.debug() FallbackSupplier: checking for value via suppliers:
LambdaSupplier: ‘JibriConfig::finalizeRecordingScriptPath’
ConfigSourceSupplier: key: ‘jibri.recording.finalize-script’, type: ‘kotlin.String’, source: ‘config’
2020-11-08 16:05:24.062 FINE: [87] org.jitsi.jibri.config.debug() LambdaSupplier: Trying to retrieve value via JibriConfig::finalizeRecordingScriptPath
2020-11-08 16:05:24.063 FINE: [87] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via LambdaSupplier: ‘JibriConfig::finalizeRecordingScriptPath’: org.jitsi.metaconfig.ConfigException$UnableToRetrieve$Error: class kotlin.KotlinNullPointerException
2020-11-08 16:05:24.063 FINE: [87] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key ‘jibri.recording.finalize-script’ from source ‘config’ as type kotlin.String
2020-11-08 16:05:24.066 FINE: [87] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key ‘jibri.recording.finalize-script’ from source ‘config’ as type kotlin.String
2020-11-08 16:05:24.067 FINE: [87] org.jitsi.jibri.config.debug() FallbackSupplier: value found via ConfigSourceSupplier: key: ‘jibri.recording.finalize-script’, type: ‘kotlin.String’, source: ‘config’
2020-11-08 16:05:24.067 INFO: [87] org.jitsi.jibri.service.impl.FileRecordingJibriService.() Writing recording to /srv/recordings/owsvbtikbkybacla, finalize script path
2020-11-08 16:05:24.076 FINE: [87] org.jitsi.jibri.statsd.JibriStatsDClient.incrementCounter() Incrementing statsd counter: start:recording
2020-11-08 16:05:24.081 INFO: [87] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: IDLE -> BUSY
2020-11-08 16:05:24.081 FINE: [87] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-08 16:05:24.082 INFO: [87] 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-08 16:05:24.096 INFO: [87] org.jitsi.jibri.JibriManager.startService() This service will have a usage timeout of 5 minute(s)
2020-11-08 16:05:24.105 INFO: [87] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Sending ‘pending’ response to start IQ
2020-11-08 16:05:25.788 FINE: [100] org.jitsi.jibri.selenium.pageobjects.CallPage.visit() Visiting url https://meet.igocctv.com/conference/siptest#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-08 16:05:26.770 FINE: [100] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property ‘isJoined’ of undefined
2020-11-08 16:05:27.281 FINE: [100] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property ‘isJoined’ of undefined
2020-11-08 16:05:56.841 SEVERE: [100] org.jitsi.jibri.selenium.pageobjects.CallPage.visit() Timed out waiting for call page to load
2020-11-08 16:05:56.845 INFO: [100] org.jitsi.jibri.selenium.JibriSelenium.onSeleniumStateChange() Transitioning from state Starting up to Error: FailedToJoinCall SESSION Failed to join the call
2020-11-08 16:05:56.848 INFO: [100] org.jitsi.jibri.service.impl.FileRecordingJibriService.onServiceStateChange() File recording service transitioning from state Starting up to Error: FailedToJoinCall SESSION Failed to join the call
2020-11-08 16:05:56.849 INFO: [100] org.jitsi.jibri.api.xmpp.XmppApi.invoke() Current service had an error Error: FailedToJoinCall SESSION Failed to join the call, sending error iq
2020-11-08 16:05:56.851 FINE: [100] org.jitsi.jibri.statsd.JibriStatsDClient.incrementCounter() Incrementing statsd counter: stop:recording
2020-11-08 16:05:56.855 INFO: [100] org.jitsi.jibri.JibriManager.stopService() Stopping the current service
2020-11-08 16:05:56.856 INFO: [100] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Stopping capturer
2020-11-08 16:05:56.857 INFO: [100] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.stop() Stopping ffmpeg process
2020-11-08 16:05:56.857 INFO: [100] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.stop() ffmpeg exited with value null
2020-11-08 16:05:56.857 INFO: [100] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Quitting selenium
2020-11-08 16:05:56.867 INFO: [100] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Participants in this recording:
2020-11-08 16:05:56.935 INFO: [100] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Leaving call and quitting browser
2020-11-08 16:05:56.936 INFO: [100] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Recurring call status checks cancelled

Looks like Jibri is not able to join the call. Did you create the necessary accounts in Prosody?

I use the command:
prosodyctl register jibri auth.meet.igocctv.com password1

prosodyctl register recorder recorder.meet.igocctv.com password2

than in jibri.conf:
control-login: {
domain=“auth.meet.igocctv.com”,
username=“jibri”,
password=“password1”
},
// 注意,如果要配置多个Jibri,同时录制多个房间,这里的用户名不能一致
control-muc: {
domain=“internal.auth.meet.igocctv.com”,
room-name=“JibriBrewery”,
nickname=“jibri”
},
call-login: {
domain=“recorder.meet.igocctv.com”,
username=“recorder”,
password=“password2”
},
sip-control-muc {
domain = “internal.auth.meet.igocctv.com”,
room-name = “JibriBrewery”,
nickname = “jibri”
}

This right?

jibri can not start,
my jibri log:

2020-11-09 10:56:46.307 INFO: [1] org.jitsi.jibri.Main.main() Using port 2222 for HTTP API
2020-11-09 10:56:46.321 WARNING: [58] org.jitsi.xmpp.mucclient.MucClient.log() Disabling certificate verification!
2020-11-09 10:56:46.666 INFO: [58] org.jitsi.xmpp.mucclient.MucClient.log() Connected.
2020-11-09 10:56:46.666 INFO: [58] org.jitsi.xmpp.mucclient.MucClient.log() Logging in.
2020-11-09 10:56:46.784 INFO: [58] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.meet.igocctv.com
2020-11-09 10:56:46.792 INFO: [58] org.jitsi.xmpp.mucclient.MucClient.log() Leaving a MUC we already occupy.
2020-11-09 10:56:46.835 INFO: [58] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.meet.igocctv.com
2020-11-09 10:57:42.261 INFO: [76] org.jitsi.jibri.api.xmpp.XmppApi.handleJibriIq() Received JibriIq from environment [MucClient id=127.0.0.1 hostname=127.0.0.1]
2020-11-09 10:57:42.263 INFO: [76] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Received start request, starting service
2020-11-09 10:57:42.394 INFO: [76] org.jitsi.jibri.api.xmpp.XmppApi.handleStartService() Parsed call url info: CallUrlInfo(baseUrl=https://meet.igocctv.com/conference, callName=siptest, urlParams=)
2020-11-09 10:57:42.395 INFO: [76] org.jitsi.jibri.JibriManager.startFileRecording() Starting a file recording with params: FileRecordingRequestParams(callParams=CallParams(callUrlInfo=CallUrlInfo(baseUrl=https://meet.igocctv.com/conference, callName=siptest, urlParams=)), sessionId=rblbvktvobplylrt, callLoginParams=XmppCredentials(domain=recorder.meet.igocctv.com, username=recorder, password=myjibrirec))
2020-11-09 10:57:42.414 FINE: [76] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key ‘jibri.chrome.flags’ from source ‘config’ as type kotlin.collections.List<kotlin.String>
2020-11-09 10:57:42.415 FINE: [76] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key ‘jibri.chrome.flags’ from source ‘config’ as type kotlin.collections.List<kotlin.String>
2020-11-09 10:57:43.233 INFO: [76] org.openqa.selenium.remote.ProtocolHandshake.createSession() Detected dialect: OSS
2020-11-09 10:57:43.258 INFO: [76] org.jitsi.jibri.selenium.JibriSelenium.() Starting empty call check with a timeout of PT30S
2020-11-09 10:57:43.277 FINE: [76] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.() Detected os as OS: LINUX
2020-11-09 10:57:43.285 FINE: [76] org.jitsi.jibri.config.debug() FallbackSupplier: checking for value via suppliers:
LambdaSupplier: ‘JibriConfig::recordingDirectory’
ConfigSourceSupplier: key: ‘jibri.recording.recordings-directory’, type: ‘kotlin.String’, source: ‘config’
2020-11-09 10:57:43.288 FINE: [76] org.jitsi.jibri.config.debug() LambdaSupplier: Trying to retrieve value via JibriConfig::recordingDirectory
2020-11-09 10:57:43.290 FINE: [76] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via LambdaSupplier: ‘JibriConfig::recordingDirectory’: org.jitsi.metaconfig.ConfigException$UnableToRetrieve$Error: class kotlin.KotlinNullPointerException
ConfigSourceSupplier: key: ‘jibri.recording.recordings-directory’, type: ‘kotlin.String’, source: ‘config’
2020-11-09 10:57:43.288 FINE: [76] org.jitsi.jibri.config.debug() LambdaSupplier: Trying to retrieve value via JibriConfig::recordingDirectory
2020-11-09 10:57:43.290 FINE: [76] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via LambdaSupplier: ‘JibriConfig::recordingDirectory’: org.jitsi.metaconfig.ConfigException$UnableToRetrieve$Error: class kotlin.KotlinNullPointerException
2020-11-09 10:57:43.290 FINE: [76] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key ‘jibri.recording.recordings-directory’ from source ‘config’ as type kotlin.String
2020-11-09 10:57:43.295 FINE: [76] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key ‘jibri.recording.recordings-directory’ from source ‘config’ as type kotlin.String
2020-11-09 10:57:43.295 FINE: [76] org.jitsi.jibri.config.debug() FallbackSupplier: value found via ConfigSourceSupplier: key: ‘jibri.recording.recordings-directory’, type: ‘kotlin.String’, source: ‘config’
2020-11-09 10:57:43.299 FINE: [76] org.jitsi.jibri.config.debug() FallbackSupplier: checking for value via suppliers:
LambdaSupplier: ‘JibriConfig::finalizeRecordingScriptPath’
ConfigSourceSupplier: key: ‘jibri.recording.finalize-script’, type: ‘kotlin.String’, source: ‘config’
2020-11-09 10:57:43.299 FINE: [76] org.jitsi.jibri.config.debug() LambdaSupplier: Trying to retrieve value via JibriConfig::finalizeRecordingScriptPath
2020-11-09 10:57:43.300 FINE: [76] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via LambdaSupplier: ‘JibriConfig::finalizeRecordingScriptPath’: org.jitsi.metaconfig.ConfigException$UnableToRetrieve$Error: class kotlin.KotlinNullPointerException
2020-11-09 10:57:43.300 FINE: [76] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key ‘jibri.recording.finalize-script’ from source ‘config’ as type kotlin.String
2020-11-09 10:57:43.301 FINE: [76] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key ‘jibri.recording.finalize-script’ from source ‘config’ as type kotlin.String
2020-11-09 10:57:43.301 FINE: [76] org.jitsi.jibri.config.debug() FallbackSupplier: value found via ConfigSourceSupplier: key: ‘jibri.recording.finalize-script’, type: ‘kotlin.String’, source: ‘config’
2020-11-09 10:57:43.302 INFO: [76] org.jitsi.jibri.service.impl.FileRecordingJibriService.() Writing recording to /srv/recordings/rblbvktvobplylrt, finalize script path
2020-11-09 10:57:43.314 FINE: [76] org.jitsi.jibri.statsd.JibriStatsDClient.incrementCounter() Incrementing statsd counter: start:recording
2020-11-09 10:57:43.315 INFO: [76] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: IDLE -> BUSY
2020-11-09 10:57:43.316 FINE: [76] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-09 10:57:43.316 INFO: [76] 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-09 10:57:43.323 INFO: [76] org.jitsi.jibri.JibriManager.startService() This service will have a usage timeout of 5 minute(s)
2020-11-09 10:57:43.334 INFO: [76] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Sending ‘pending’ response to start IQ
2020-11-09 10:57:45.092 FINE: [97] org.jitsi.jibri.selenium.pageobjects.CallPage.visit() Visiting url https://meet.igocctv.com/conference/siptest#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-09 10:57:45.236 FINE: [45] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-09 10:57:45.881 FINE: [97] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property ‘isJoined’ of undefined
2020-11-09 10:57:46.412 FINE: [97] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property ‘isJoined’ of undefined
2020-11-09 10:58:15.977 SEVERE: [97] org.jitsi.jibri.selenium.pageobjects.CallPage.visit() Timed out waiting for call page to load
2020-11-09 10:58:15.981 INFO: [97] org.jitsi.jibri.selenium.JibriSelenium.onSeleniumStateChange() Transitioning from state Starting up to Error: FailedToJoinCall SESSION Failed to join the call
2020-11-09 10:58:15.982 INFO: [97] org.jitsi.jibri.service.impl.FileRecordingJibriService.onServiceStateChange() File recording service transitioning from state Starting up to Error: FailedToJoinCall SESSION Failed to join the call
2020-11-09 10:58:15.983 INFO: [97] org.jitsi.jibri.api.xmpp.XmppApi.invoke() Current service had an error Error: FailedToJoinCall SESSION Failed to join the call, sending error iq
2020-11-09 10:58:15.984 FINE: [97] org.jitsi.jibri.statsd.JibriStatsDClient.incrementCounter() Incrementing statsd counter: stop:recording
2020-11-09 10:58:15.985 INFO: [97] org.jitsi.jibri.JibriManager.stopService() Stopping the current service
2020-11-09 10:58:15.985 INFO: [97] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Stopping capturer
2020-11-09 10:58:15.990 INFO: [97] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.stop() Stopping ffmpeg process
2020-11-09 10:58:15.990 INFO: [97] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.stop() ffmpeg exited with value null
2020-11-09 10:58:15.991 INFO: [97] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Quitting selenium
2020-11-09 10:58:16.011 INFO: [97] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Participants in this recording:
2020-11-09 10:58:16.064 INFO: [97] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Leaving call and quitting browser
2020-11-09 10:58:16.065 INFO: [97] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Recurring call status checks cancelled
2020-11-09 10:58:16.086 INFO: [97] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Got 20 log entries for type browser
2020-11-09 10:58:16.192 INFO: [97] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Got 1117 log entries for type driver
2020-11-09 10:58:16.492 INFO: [97] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Got 0 log entries for type client
2020-11-09 10:58:16.493 INFO: [97] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Leaving web call
2020-11-09 10:58:21.516 SEVERE: [97] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Error trying to leave the call: org.openqa.selenium.JavascriptException: javascript error: The timeout for the confirmation about leaving the room expired.
(Session info: chrome=86.0.4240.183)
(Driver info: chromedriver=86.0.4240.22 (398b0743353ff36fb1b82468f63a3a93b4e2e89e-refs/branch-heads/4240@{#378}),platform=Linux 4.4.0-185-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: ‘iZbp1i53ubqg3vz9vlay70Z’, ip: ‘10.27.89.163’, os.name: ‘Linux’, os.arch: ‘amd64’, os.version: ‘4.4.0-185-generic’, java.version: ‘9-internal’
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.c8yrKi}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:45604}, 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.183, webStorageEnabled: true, webauthn:virtualAuthenticators: true}
Session ID: 70e8419273976981b330f1dd0af3d35f with stack:
sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.base@9-internal/Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(java.base@9-internal/NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(java.base@9-internal/DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(java.base@9-internal/Constructor.java:453)
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)
2020-11-09 10:58:21.516 INFO: [97] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Quitting chrome driver
2020-11-09 10:58:21.592 INFO: [97] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Chrome driver quit
2020-11-09 10:58:21.593 INFO: [97] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Finalizing the recording
2020-11-09 10:58:21.594 SEVERE: [97] org.jitsi.jibri.service.impl.FileRecordingJibriService.finalize() Failed to run finalize script: java.io.IOException: Cannot run program “”: error=2, No such file or directory with stack:
java.lang.ProcessBuilder.start(java.base@9-internal/ProcessBuilder.java:1131)
java.lang.ProcessBuilder.start(java.base@9-internal/ProcessBuilder.java:1074)
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)
2020-11-09 10:58:21.595 FINE: [97] org.jitsi.jibri.config.debug() FallbackSupplier: checking for value via suppliers:
LambdaSupplier: ‘JibriConfig::singleUseMode’
ConfigSourceSupplier: key: ‘jibri.single-use-mode’, type: ‘kotlin.Boolean’, source: ‘config’
2020-11-09 10:58:21.595 FINE: [97] org.jitsi.jibri.config.debug() LambdaSupplier: Trying to retrieve value via JibriConfig::singleUseMode
2020-11-09 10:58:21.596 FINE: [97] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via LambdaSupplier: ‘JibriConfig::singleUseMode’: org.jitsi.metaconfig.ConfigException$UnableToRetrieve$Error: class kotlin.KotlinNullPointerException
2020-11-09 10:58:21.596 FINE: [97] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key ‘jibri.single-use-mode’ from source ‘config’ as type kotlin.Boolean
2020-11-09 10:58:21.597 FINE: [97] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key ‘jibri.single-use-mode’ from source ‘config’ as type kotlin.Boolean
2020-11-09 10:58:21.597 FINE: [97] org.jitsi.jibri.config.debug() FallbackSupplier: value found via ConfigSourceSupplier: key: ‘jibri.single-use-mode’, type: ‘kotlin.Boolean’, source: ‘config’
2020-11-09 10:58:21.597 INFO: [97] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: BUSY -> IDLE
2020-11-09 10:58:21.598 FINE: [97] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-11-09 10:58:21.598 INFO: [97] 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-09 10:58:45.236 FINE: [45] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status

Any help on what I could be doing wrong?

jibri record can not start,
my jibri log attanch.
Any help on what I could be doing wrong?log.0.txt (33.6 KB)