Jibri Problem Recording Failed Start

Recording Failed Start. Please help me.log.0.txt (30.5 KB)

● jibri.service - Jibri Process
Loaded: loaded (/etc/systemd/system/jibri.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-01-19 14:42:05 UTC; 18h ago
Main PID: 2323 (java)
Tasks: 43 (limit: 2289)
CGroup: /system.slice/jibri.service
└─2323 java -Djava.util.logging.config.file=/etc/jitsi/jibri/logging.properties -Dconfig.file=/etc/jitsi/jibri/jibri.conf -jar /opt/jitsi/jibri/jibri.jar --config /etc/jitsi/jibri/config.json

Jan 19 14:42:05 local systemd[1]: Started Jibri Process.
Jan 19 14:42:06 local launch.sh[2323]: SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.
Jan 19 14:42:06 local launch.sh[2323]: SLF4J: Defaulting to no-operation (NOP) logger implementation
Jan 19 14:42:06 local launch.sh[2323]: SLF4J: See SLF4J Error Codes for further details.

What version of java are you using?

java 8
java -version
openjdk version “1.8.0_275”
OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~18.04-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)

What do you get when you run this command?

update-alternatives --config java

Selection Path Priority Status

  • 0 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 auto mode
    1 /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/java 1081 manual mode
    2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode

Ok cool, that’s the only java version you have.
What linux distro are you running?

Ubuntu 18.04 Server LTS

Take a look at this post, it might help you solve the problem - TUTORIAL: Jibri Overview, Troubleshooting Tips & Tricks - Solve your Jibri Problems, Quickly!

Thank you! I am looking

my problem is recording has stopped after starting recording

[image]

I have the same problem. Recording fails as soon as I click on the recorder button. I’m running:

jibri/stable,now 8.0-61-g99288dc-1 all [installed]
jicofo/stable,now 1.0-690-1 all [installed,upgradable to: 1.0-691-hf-1]
jitsi-meet/stable,now 2.0.5390-1 all [installed,upgradable to: 2.0.5390-2]
jitsi-meet-prosody/stable,now 1.0.4628-1 all [installed,automatic]
jitsi-meet-tokens/stable,now 1.0.4628-1 all [installed]
jitsi-meet-turnserver/stable,now 1.0.4628-1 all [installed,automatic]
jitsi-meet-web/stable,now 1.0.4628-1 all [installed,automatic]
jitsi-meet-web-config/stable,now 1.0.4628-1 all [installed,automatic]
jitsi-videobridge2/stable,now 2.1-416-g2f43d1b4-1 all [installed,automatic]
nginx-full/bionic-updates,bionic-security,now 1.14.0-0ubuntu1.7 amd64 [installed]
prosody/unknown,now 0.11.7-1~bionic4 amd64 [installed,automatic]

This setup has all the component (including the turnserver for TCP 443 only-usage) and JWT authentication configured. I’ve already looked into How-to to setup integrated Jitsi and Jibri for dummies, my comprehensive tutorial for the beginner but with no avail
I see no errors whatsoever in the log files when trying starting the jibri service from systemctl nor when starting the recording from the conference. Here’s jibri.conf config, with properly hidden sensitive data:

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 = [
        {
            // A user-friendly name for this environment
            name = "MyJitsi"

            // A list of XMPP server hosts to which we'll connect
            xmpp-server-hosts = [ "10.144.109.132" ]

            // The base XMPP domain
            xmpp-domain = "my.domain.it"

            // The MUC we'll join to announce our presence for
            // recording and streaming services
            control-muc {
                domain = "internal.auth.my.domain.it"
                room-name = "JibriBrewery"
                nickname = "jibri-nickname"
            }

            // The login information for the control MUC
            control-login {
                domain = "auth.my.domain.it"
                username = "jibri"
                password = "mypassword"
            }


            // The login information the selenium web client will use
            call-login {
                domain = "recorder.my.domain.it"
                username = "recorder"
                password = "mypassword"
            }

            // The value we'll strip from the room JID domain to derive
            // the call URL
            strip-from-room-domain = ""

            // How long Jibri sessions will be allowed to last before
            // they are stopped.  A value of 0 allows them to go on
            // indefinitely
            usage-timeout = 1 hour

            // Whether or not we'll automatically trust any cert on
            // this XMPP domain
            trust-all-xmpp-certs = true
        }
    ]
    }
  }
  recording {
    recordings-directory = "/opt/jibri_recordings"
    # TODO: make this an optional param and remove the default
    finalize-script = "/opt/finalize.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
  }
}

From your logs:

2021-01-20 09:34:41.122 SEVERE: [52] org.jitsi.jibri.selenium.JibriSelenium.run() An error occurred while joining the call: org.openqa.selenium.WebDriverException: <unknown>: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.

I think others have run into this before, and I think it was something cert-related?

Not sure if this is all your problem, but this is certainly one of it. That line should be:

strip-from-room-domain = “conference.”

Thanks for your reply! I’ve fixed that line, unfortunately the problem still persist… Any other ideas I could check?

Hi,

I have completed the set-up for Jitsi and to enable recording feature I followed this link to set-up Jibri on Ubuntu 18.04.5 LTS. When i click on “Start Recording” button it’s showing message “Recording unavailable” or sometimes “Recording Failed to Start”.

This is the content of jibri.conf file

jibri {
single-use-mode = false

recording {
recordings-directory = “/srv/recordings”
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”,
“–ignore-certificate-errors”
]
}

stats {
enable-stats-d = true
}

api {
http {
external-api-port = 2222
internal-api-port = 3333
}

   xmpp {
        environments = [
            {
                name = "prod environment"
                xmpp-server-hosts = ["hps025.com"]
                xmpp-domain = "hps025.com"

                control-muc {
                    domain = "internal.auth.hps025.com"
                    room-name = "JibriBrewery"
                    nickname = "jibri1"
                }

                control-login {
                    domain = "auth.hps025.com"
                    username = "jibri"
                    password = "jibriauthpass"
                }

                call-login {
                    domain = "recorder.hps025.com"
                    username = "recorder"
                    password = "jibrirecorderpass"
                }

                strip-from-room-domain = "conference."
                usage-timeout = 0

                trust-all-xmpp-certs = true
            }
        ]
    }
}

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

}
}

I’m also adding the logs

  1. Jicofo logs

1.a. logs from file jicofo.log.1

Jicofo 2021-01-22 10:09:12.020 SEVERE: [41] org.jitsi.jicofo.recording.jibri.JibriSession.log() Unable to find an available Jibri, can’t start
Jicofo 2021-01-22 10:09:12.023 INFO: [41] org.jitsi.jicofo.recording.jibri.JibriRecorder.log() Failed to start a Jibri session, no Jibris available

1.b. logs from file jicofo.log

Jicofo 2021-01-22 09:51:23.697 SEVERE: [18] org.jitsi.impl.protocol.xmpp.XmppProtocolProvider.log() Failed to connect/login: The following addresses failed: ‘localhost:5222’ failed because: localhost/127.0.0.1 exception: java.net.ConnectException: Connection refused (Connection refused)
org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: ‘localhost:5222’ failed because: localhost/127.0.0.1 exception: java.net.ConnectException: Connection refused (Connection refused)
at org.jivesoftware.smack.SmackException$ConnectionException.from(SmackException.java:278)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPConnection.java:619)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:902)
at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:383)
at org.jitsi.impl.protocol.xmpp.XmppProtocolProvider.doConnect(XmppProtocolProvider.java:269)
at org.jitsi.retry.RetryStrategy$TaskRunner.run(RetryStrategy.java:193)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Jicofo 2021-01-22 09:51:26.036 SEVERE: [29] org.jitsi.xmpp.component.ComponentBase.log() Failed to send ping
java.lang.NullPointerException
at org.xmpp.component.AbstractComponent.send(AbstractComponent.java:925)
at org.jitsi.xmpp.component.ComponentBase.access$400(ComponentBase.java:36)
at org.jitsi.xmpp.component.ComponentBase$PingTask.run(ComponentBase.java:577)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
Jicofo 2021-01-22 09:51:26.037 SEVERE: [30] org.jitsi.meet.ComponentMain.log() java.net.ConnectException: Connection refused (Connection refused), host:localhost, port:5347
org.xmpp.component.ComponentException: java.net.ConnectException: Connection refused (Connection refused)

  1. Jibri logs

2021-01-22 10:28:35.402 INFO: [1] org.jitsi.jibri.Main.handleCommandLineArgs() Jibri run with args [–config, /etc/jitsi/jibri/config.json]

Please help me in fixing the issue.

I have the same problem. I’ll add another conclusion:
root@matrix:~# systemctl status jibri
● jibri.service - Jibri Process
Loaded: loaded (/etc/systemd/system/jibri.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2021-01-22 11:43:33 CET; 17min ago
Main PID: 8806 (code=exited, status=143)

Jan 22 11:43:33 matrix graceful_shutdown.sh[8830]: Dload Upload Total Spent Left Speed
Jan 22 11:43:33 matrix graceful_shutdown.sh[8830]: [149B blob data]
Jan 22 11:43:33 matrix systemd[1]: jibri.service: Control process exited, code=exited status=7
Jan 22 11:43:33 matrix systemd[1]: jibri.service: Main process exited, code=exited, status=143/n/a
Jan 22 11:43:33 matrix systemd[1]: Stopped Jibri Process.
Jan 22 11:43:33 matrix systemd[1]: jibri.service: Unit entered failed state.
Jan 22 11:43:33 matrix systemd[1]: jibri.service: Failed with result ‘exit-code’.
Jan 22 11:43:33 matrix systemd[1]: jibri.service: Start request repeated too quickly.
Jan 22 11:43:33 matrix systemd[1]: Failed to start Jibri Process.
Jan 22 11:43:33 matrix systemd[1]: jibri.service: Failed with result ‘exit-code’.