Recording Stopped (Recording failed to start)

On jibri side you will need to install and jitsi-upload-integrations and use the provided script as a finalize script.

Hi @damencho what exactly do I need to install ? Install jitsi upload integrations ?

Yes install it and configure /usr/bin/jitsi_uploader.sh as finalize_recording_script_path

Working !!! Thanks @damencho

I have setup two servers for - Jitsi and Jibri .Ubuntu 18.04 LTS
After few secs of clicking the Rec button, it’s showing Rec failed
what I am looking for. Why does it fails and what is the solution?
Can anything be derived from the log? firewall also disabled

meet.yourcloudcampus.com is the url

/etc/prosody/prosody.cfg.lua
consider_bosh_secure = true;. this line also added

What does jibri logs say?

sorry for late replay not able to share logs

it says Sorry, new users can only put 2 links in a post

Reinstalling jibri wont overwrite existing configurations?

Should not

1 Like

Something strange happened to me, after the upgrade appeared “ERR_CONNECTION_REFUSED”, but everything is ok with the Nginx settings …

This worked for me thanks @damencho

Hi

I When I starts recording button ,it would some processing till 10-15 sec. and then it said Recording has stopped.

I have upload jibri logs …

please provide me suggestion ,

Thanks

2020-04-30 13:56:55.578 INFO: [1] org.jitsi.jibri.Main.main() Jibri run with args [–config, /etc/jitsi/jibri/config.json]
2020-04-30 13:56:55.584 INFO: [1] org.jitsi.jibri.Main.main() Using config file /etc/jitsi/jibri/config.json
2020-04-30 13:56:55.584 INFO: [1] org.jitsi.jibri.Main.main() Using port 3333 for internal HTTP API
2020-04-30 13:56:55.584 INFO: [1] org.jitsi.jibri.Main.main() Using port 2222 for the HTTP API
2020-04-30 13:56:56.362 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=[192.168.0.110], xmppDomain=192.168.0.110, controlLogin=XmppCredentials(domain=auth.192.168.0.110, username=jibri, password=jibriauthpass), controlMuc=XmppMuc(domain=internal.auth.192.168.0.110, roomName=JibriBrewery, nickname=jibri-nickname), sipControlMuc=null, callLogin=XmppCredentials(domain=recorder.192.168.0.110, username=recorder, password=jibrirecorderpass), stripFromRoomDomain=conference., usageTimeoutMins=0, trustAllXmppCerts=true)])
2020-04-30 13:56:57.060 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-04-30 13:56:57.417 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-04-30 13:56:57.419 INFO: [1] org.jitsi.xmpp.mucclient.MucClientManager.log() Setting a presence extension: org.jitsi.xmpp.extensions.jibri.JibriStatusPacketExt@771158fb
2020-04-30 13:56:57.427 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.start() Connecting to xmpp environment on 192.168.0.110 with config XmppEnvironmentConfig(name=prod environment, xmppServerHosts=[192.168.0.110], xmppDomain=192.168.0.110, controlLogin=XmppCredentials(domain=auth.192.168.0.110, username=jibri, password=jibriauthpass), controlMuc=XmppMuc(domain=internal.auth.192.168.0.110, roomName=JibriBrewery, nickname=jibri-nickname), sipControlMuc=null, callLogin=XmppCredentials(domain=recorder.192.168.0.110, username=recorder, password=jibrirecorderpass), stripFromRoomDomain=conference., usageTimeoutMins=0, trustAllXmppCerts=true)
2020-04-30 13:56:57.428 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-04-30 13:56:57.449 WARNING: [19] org.jitsi.xmpp.mucclient.MucClient.log() Disabling certificate verification!
2020-04-30 13:56:57.536 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-04-30 13:56:57.913 INFO: [19] org.jitsi.xmpp.mucclient.MucClient.log() [MucClient id=192.168.0.110 hostname=192.168.0.110] connected
2020-04-30 13:56:58.011 INFO: [19] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.192.168.0.110

please post the entire log OR attach it.

browser.0.txt (106.5 KB) log.0.txt (44.3 KB)
jvb.txt (24.9 KB) jicofo.txt (52.2 KB)
prosody.log (4.1 KB) prosody_err.txt (268 Bytes)

you have this error in your log.0.txt

Failed to read the 'localStorage' property from 'Window': Access is denied for this document

are you using the docker instance? if so read this thread

In addition you havent created the file “finalize_recordings.sh”

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: "

just make it blank in the config.json OR create the file and point it correctly

I had try with as below configuration but still its same issue…
/etc/jitsi/jibri/config.json

 {
   
        // Where recording files should be temporarily stored
        "recording_directory":"/srv/recordings",
        // The path to the script which will be run on completed recordings
        "finalize_recording_script_path": "",
        //"JIBRI_FINALIZE_RECORDING_SCRIPT_PATH":"/usr/bin/finalize_recording.sh",
        "xmpp_environments": [
            {
                // A friendly name for this environment which can be used
                //  for logging, stats, etc.
                "name": "prod environment",
                // The hosts of the XMPP servers to connect to as part of
                //  this environment
                "xmpp_server_hosts": [
                    "192.168.0.110"
                ],
                // The xmpp domain we'll connect to on the XMPP server
                "xmpp_domain": "192.168.0.110",
                // Jibri will login to the xmpp server as a privileged user 
                "control_login": {
                    // The domain to use for logging in
                    "domain": "auth.192.168.0.110",
                    // The credentials for logging in
                    "username": "jibri",
                    "password": "jibriauthpass"
                },
                // Using the control_login information above, Jibri will join 
                //  a control muc as a means of announcing its availability 
                //  to provide services for a given environment
                "control_muc": {
                    "domain": "internal.auth.192.168.0.110",
                    "room_name": "JibriBrewery",
                    "nickname": "jibri-nickname"
                },
                // All participants in a call join a muc so they can exchange
                //  information.  Jibri can be instructed to join a special muc
                //  with credentials to give it special abilities (e.g. not being
                //  displayed to other users like a normal participant)
                "call_login": {
                    "domain": "recorder.192.168.0.110",
                    "username": "recorder",
                    "password": "jibrirecorderpass"
                },
                // When jibri gets a request to start a service for a room, the room
                //  jid will look like:
                //  roomName@optional.prefixes.subdomain.xmpp_domain
                // We'll build the url for the call by transforming that into:
                //  https://xmpp_domain/subdomain/roomName
                // So if there are any prefixes in the jid (like jitsi meet, which
                //  has its participants join a muc at conference.xmpp_domain) then
                //  list that prefix here so it can be stripped out to generate
                //  the call url correctly
                "room_jid_domain_string_to_strip_from_start": "conference.",
                // The amount of time, in minutes, a service is allowed to continue.
                //  Once a service has been running for this long, it will be
                //  stopped (cleanly).  A value of 0 means an indefinite amount
                //  of time is allowed
                "usage_timeout": "0"
            }
        ]
    }

/etc/prosody/prosody.cfg.lua

Component "internal.auth.192.168.0.110" "muc"
modules_enabled = {
  "ping";
}
storage = "internal"
muc_room_cache_size = 1000

VirtualHost "recorder.192.168.0.110"
  modules_enabled = {
"ping";
  }
  authentication = "internal_plain"

/etc/jitsi/meet/192.168.0.110-config.js

fileRecordingsEnabled: true,
liveStreamingEnabled: true,
hiddenDomain: 'recorder.192.168.0.110',

/etc/jitsi/jicofo/sip-communicator.properties

org.jitsi.jicofo.BRIDGE_MUC=JvbBrewery@internal.auth.192.168.0.110
org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.192.168.0.110
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90


[browser.0.txt|attachment](upload://5PndYtGxsyeJBsxVpfzR0AVppRp.txt) (69.3 KB)

Are you installing this in a VM or standalone machine?

I m using in VM

please use domain names instead of ip address in the config.json.

add the meet server in /etc/hosts file of jibri server and resolve it to the jitsi-meet server

like this. add this line in /etc/hosts in the jibri server

192.168.0.110 meet.mydomain.com

now change the IP addresses in config.json to meet.mydomain.com

Hello

I have done with domain name.Now this time when I starts recording ,it will stopped automatic after 30 seconds.and when I try again to start recording it shows All recorders are currently busy.
Please guide for it.
I have also upload a logs , and configuration
thanks

/etc/prosody/prosody.cfg.lua

-- internal muc component, meant to enable pools of jibri and jigasi clients
Component "internal.auth.meet.addwebprojects.com" "muc"
    modules_enabled = {
      "ping";
    }
    storage = "null"
    muc_room_cache_size = 1000

VirtualHost "recorder.meet.addwebprojects.com"
  modules_enabled = {
    "ping";
  }
  authentication = "internal_plain"

/etc/jitsi/jicofo/sip-communicator.properties

org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.meet.addwebprojects.com
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90

/etc/jitsi/meet/meet.addwebprojects.com-config.js

fileRecordingsEnabled: true, // If you want to enable file recording
liveStreamingEnabled: true, // If you want to enable live streaming
hiddenDomain: 'recorder.meet.addwebprojects.com',

/etc/jitsi/jibri/config.json

{
    // NOTE: this is a *SAMPLE* config file, it will need to be configured with
    // values from your environment

    // Where recording files should be temporarily stored
    "recording_directory":"/srv/recordings",
    // The path to the script which will be run on completed recordings
    "finalize_recording_script_path": "",
    "xmpp_environments": [
        {
            // A friendly name for this environment which can be used
            //  for logging, stats, etc.
            "name": "prod environment",
            // The hosts of the XMPP servers to connect to as part of
            //  this environment
            "xmpp_server_hosts": [
                "meet.addwebprojects.com"
            ],
            // The xmpp domain we'll connect to on the XMPP server
            "xmpp_domain": "meet.addwebprojects.com",
            // Jibri will login to the xmpp server as a privileged user 
            "control_login": {
                // The domain to use for logging in
                "domain": "auth.meet.addwebprojects.com",
                // The credentials for logging in
                "username": "jibri",
                "password": "jibriauthpass"
            },
            // Using the control_login information above, Jibri will join 
            //  a control muc as a means of announcing its availability 
            //  to provide services for a given environment
            "control_muc": {
                "domain": "internal.auth.meet.addwebprojects.com",
                "room_name": "JibriBrewery",
                "nickname": "jibri-nickname"
            },
            // All participants in a call join a muc so they can exchange
            //  information.  Jibri can be instructed to join a special muc
            //  with credentials to give it special abilities (e.g. not being
            //  displayed to other users like a normal participant)
            "call_login": {
                "domain": "recorder.meet.addwebprojects.com",
                "username": "recorder",
                "password": "jibrirecorderpass"
            },
            // When jibri gets a request to start a service for a room, the room
            //  jid will look like:
            //  roomName@optional.prefixes.subdomain.xmpp_domain
            // We'll build the url for the call by transforming that into:
            //  https://xmpp_domain/subdomain/roomName
            // So if there are any prefixes in the jid (like jitsi meet, which
            //  has its participants join a muc at conference.xmpp_domain) then
            //  list that prefix here so it can be stripped out to generate
            //  the call url correctly
            "room_jid_domain_string_to_strip_from_start": "conference.",
            // The amount of time, in minutes, a service is allowed to continue.
            //  Once a service has been running for this long, it will be
            //  stopped (cleanly).  A value of 0 means an indefinite amount
            //  of time is allowed
            "usage_timeout": "0"
        }
    ]
}

browser.0.txt (355 Bytes) ffmpeg.0.txt (6.3 KB) jicofo.txt (45.5 KB) jvb.txt (94.3 KB) log.0.txt (14.8 KB)