Hi team,
We are trying to integrate Jibri into our standalone Jitsi Meet server. Also, we are using a separate AWS EC2 instance for Jibri setup. The installation & configurations are done using this link without any hassle. TUTORIAL - How to Install the NEW JIBRI.
But now, when we try to launch the room & click on start recording button, there are no console errors in the browser. But the recording fails after some attempts.
I have launched the jibri URL manually https://my-jitsi-domain.com/room1#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 and it loads without any issues.
Here are the logs,
Jibri Log
2021-04-17 18:05:26.811 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-04-17 18:05:34.892 INFO: [845] org.jitsi.jibri.api.xmpp.XmppApi.log() Received JibriIq <iq to='jibri@auth.my-jitsi-domain.com/NQAZ3L_K' from='jibribrewery@internal.auth.my-jitsi-domain.com/focus' id='amlicmlAYXV0aC5jbGFzc3Jvb20tc3RhZ2luZy1kZXYucHJlcGF6ZS5jb20vTlFBWjNMX0sAYmhnU3EtMTMzMjUAI/lrSw5UoByNKYt9JdTWoA==' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' action='start' recording_mode='file' room='room1@conference.my-jitsi-domain.com' session_id='osdcoywarxbxasbv' app_data='{"file_recording_metadata":{"share":true}}'/></iq> from environment [MucClient id=my-jitsi-domain.com hostname=my-jitsi-domain.com]
2021-04-17 18:05:34.893 INFO: [845] org.jitsi.jibri.api.xmpp.XmppApi.log() Received start request, starting service
2021-04-17 18:05:34.913 INFO: [845] org.jitsi.jibri.api.xmpp.XmppApi.log() Parsed call url info: CallUrlInfo(baseUrl=https://my-jitsi-domain.com, callName=room1, urlParams=[])
2021-04-17 18:05:34.913 INFO: [845] org.jitsi.jibri.JibriManager.log() Starting a file recording with params: FileRecordingRequestParams(callParams=CallParams(callUrlInfo=CallUrlInfo(baseUrl=https://my-jitsi-domain.com, callName=room1, urlParams=[])), sessionId=osdcoywarxbxasbv, callLoginParams=XmppCredentials(domain=recorder.my-jitsi-domain.com, username=recorder, password=myjibrirecpassword))
2021-04-17 18:05:34.914 FINE: [845] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.log() Detected os as OS: LINUX
2021-04-17 18:05:35.509 INFO: [845] org.openqa.selenium.remote.ProtocolHandshake.createSession() Detected dialect: OSS
2021-04-17 18:05:35.517 INFO: [845] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() Writing recording to /srv/recordings/osdcoywarxbxasbv, finalize script path /path/to/finalize_recording.sh
2021-04-17 18:05:35.518 FINE: [845] org.jitsi.jibri.statsd.JibriStatsDClient.log() Incrementing statsd counter: start:recording
2021-04-17 18:05:35.518 INFO: [845] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: IDLE -> BUSY
2021-04-17 18:05:35.518 FINE: [845] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-04-17 18:05:35.518 INFO: [845] org.jitsi.jibri.api.xmpp.XmppApi.log() Jibri reports its status is now JibriStatus(busyStatus=BUSY, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections
2021-04-17 18:05:35.533 INFO: [845] org.jitsi.jibri.api.xmpp.XmppApi.log() Sending 'pending' response to start IQ
2021-04-17 18:05:35.534 INFO: [857] org.jitsi.jibri.selenium.pageobjects.HomePage.log() Visiting url https://my-jitsi-domain.com
2021-04-17 18:05:37.523 INFO: [857] org.jitsi.jibri.selenium.pageobjects.HomePage.log() Waited 1.99s for driver to load page
2021-04-17 18:05:37.645 INFO: [857] org.jitsi.jibri.selenium.pageobjects.CallPage.log() Visiting url https://my-jitsi-domain.com/room1#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
2021-04-17 18:05:38.771 INFO: [857] org.jitsi.jibri.selenium.pageobjects.CallPage.log() Waited 1.12s for driver to load page
2021-04-17 18:05:38.783 FINE: [857] org.jitsi.jibri.selenium.pageobjects.CallPage.log() Not joined yet: Cannot read property 'isJoined' of undefined
2021-04-17 18:05:39.295 FINE: [857] org.jitsi.jibri.selenium.pageobjects.CallPage.log() Not joined yet: Cannot read property 'isJoined' of undefined
2021-04-17 18:05:39.801 FINE: [857] org.jitsi.jibri.selenium.pageobjects.CallPage.log() Not joined yet: Cannot read property 'isJoined' of undefined
Jicofo Log
Jicofo 2021-04-17 18:05:29.948 INFO: [31] org.jitsi.jicofo.ChatRoomRoleAndPresence.log() Chat room event ChatRoomMemberPresenceChangeEvent[type=MemberLeft sourceRoom=org.jitsi.impl.protocol.xmpp.ChatRoomImpl@50722859 member=ChatMember[prepaze_lms_space_staging_3196@conference.my-jitsi-domain.com/c4002aac, jid: c4002aac-d8ba-4b1f-9ad7-9c8450f99529@my-jitsi-domain.com/tpeBTnyZ]@1276043326]
Jicofo 2021-04-17 18:05:29.949 INFO: [31] org.jitsi.jicofo.ChatRoomRoleAndPresence.log() Owner has left the room !
Jicofo 2021-04-17 18:05:29.949 INFO: [31] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Member prepaze_lms_space_staging_3196@conference.my-jitsi-domain.com/c4002aac is leaving
Jicofo 2021-04-17 18:05:29.949 WARNING: [31] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Participant not found for prepaze_lms_space_staging_3196@conference.my-jitsi-domain.com/c4002aac terminated already or never started ?
Jicofo 2021-04-17 18:05:29.953 INFO: [31] org.jitsi.jicofo.FocusManager.log() Disposed conference for room: prepaze_lms_space_staging_3196@conference.my-jitsi-domain.com conference count: 2
Jicofo 2021-04-17 18:05:30.240 INFO: [31] org.jitsi.jicofo.ChatRoomRoleAndPresence.log() Owner has left the room !
Jicofo 2021-04-17 18:05:34.892 INFO: [369] org.jitsi.jicofo.recording.jibri.JibriSession.log() Starting session with Jibri jibribrewery@internal.auth.my-jitsi-domain.com/jibri-nickname
Jicofo 2021-04-17 18:05:34.892 INFO: [369] org.jitsi.jicofo.recording.jibri.JibriSession.log() Starting Jibri jibribrewery@internal.auth.my-jitsi-domain.com/jibri-nickname for stream ID: null in room: room1@conference.my-jitsi-domain.com
Jicofo 2021-04-17 18:05:35.523 INFO: [31] org.jitsi.jicofo.recording.jibri.JibriDetector.log() Received Jibri jibribrewery@internal.auth.my-jitsi-domain.com/jibri-nickname status <jibri-status xmlns='http://jitsi.org/protocol/jibri'><busy-status xmlns='http://jitsi.org/protocol/jibri' status='busy'/><health-status xmlns='http://jitsi.org/protocol/health' status='healthy'/></jibri-status>
Jicofo 2021-04-17 18:05:35.536 INFO: [369] org.jitsi.jicofo.recording.jibri.JibriSession.log() Updating status from JIBRI: <iq to='focus@auth.my-jitsi-domain.com/focus1976652685859310' from='jibribrewery@internal.auth.my-jitsi-domain.com/jibri-nickname' id='bhgSq-13325' type='result'><jibri xmlns='http://jitsi.org/protocol/jibri' status='pending'/></iq> for room1@conference.my-jitsi-domain.com
Jicofo 2021-04-17 18:05:35.536 INFO: [369] org.jitsi.jicofo.recording.jibri.JibriSession.log() Got Jibri status update: Jibri jibribrewery@internal.auth.my-jitsi-domain.com/jibri-nickname has status pending and failure reason null, current Jibri jid is jibribrewery@internal.auth.my-jitsi-domain.com/jibri-nickname
Jicofo 2021-04-17 18:05:35.536 INFO: [369] org.jitsi.jicofo.recording.jibri.JibriRecorder.log() Started Jibri session
Jibri config
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 = [
{
name = "staging environment"
xmpp-server-hosts = ["my-jitsi-domain.com"]
xmpp-domain = "my-jitsi-domain.com"
control-muc {
domain = "internal.auth.my-jitsi-domain.com"
room-name = "JibriBrewery"
nickname = "jibri-nickname"
}
control-login {
domain = "auth.my-jitsi-domain.com"
username = "jibri"
password = "myauthpassword"
}
call-login {
domain = "recorder.my-jitsi-domain.com"
username = "recorder"
password = "myrecordingpassword"
}
strip-from-room-domain = "conference."
usage-timeout = 0
trust-all-xmpp-certs = true
}]
}
}
recording {
recordings-directory = "/srv/recordings"
# TODO: make this an optional param and remove the default
finalize-script = "/path/to/finalize_recording.sh"
}
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
}
}
Any help in resolving this issue will be much appreciated. Thanks in advance