Coder Social home page Coder Social logo

jibri's Introduction

Jibri

JItsi BRoadcasting Infrastructure

What is Jibri

Jibri provides services for recording or streaming a Jitsi Meet conference.

It works by launching a Chrome instance rendered in a virtual framebuffer and capturing and encoding the output with ffmpeg. It is intended to be run on a separate machine (or a VM), with no other applications using the display or audio devices. Only one recording at a time is supported on a single jibri.

NOTE: Jibri currently only works with a full-fledged Jitsi Meet installation. Using a different frontend won't work.

Installing Jibri

Installation notes

  • Jibri was built on Ubuntu 18.04 (Bionic), and has been tested with the pre-built kernel and extra kernel modules (linux-image-extra-virtual package). Any other distribution or kernel configuration MAY work but has not been tested.

Pre-requisites

ALSA and Loopback Device

  • First make sure the ALSA loopback module is available. The extra modules (including ALSA loopback) can be installed on Ubuntu 16.04 using package name linux-image-extra-virtual
  • Perform the following tasks as the root user
    • Set up the module to be loaded on boot: echo "snd_aloop" >> /etc/modules
    • Load the module into the running kernel: modprobe snd_aloop
    • Check to see that the module is already loaded: lsmod | grep snd_aloop
  • If the output shows the snd-aloop module loaded, then the ALSA loopback configuration step is complete.

Ffmpeg with X11 capture support

  • Jibri requires a relatively modern ffmpeg install with x11 capture compiled in. This comes by default in Ubuntu 16.04, by installing the ffmpeg package.
  • If building Jibri for Ubuntu 14.04 (trusty), the mc3man repo provides packages. They can be used by the following in Ubuntu 14.04:
sudo add-apt-repository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get install ffmpeg

Google Chrome stable & Chromedriver

The latest Google Chrome stable build should be used. It may be able to be installed direclty via apt, but the manual instructions for installing it are as follows:

sudo su -l
apt-get -y install wget curl gnupg jq unzip

curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /usr/share/keyrings/google-chrome-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome-keyring.gpg] http://dl.google.com/linux/chrome/deb/ stable main" | tee /etc/apt/sources.list.d/google-chrome.list

apt-get -y update
apt-get -y install google-chrome-stable
apt-mark hold google-chrome-stable

Add chrome managed policies file and set CommandLineFlagSecurityWarningsEnabled to false. It will hide warnings in Chrome. You can set it like so:

mkdir -p /etc/opt/chrome/policies/managed
echo '{ "CommandLineFlagSecurityWarningsEnabled": false }' >>/etc/opt/chrome/policies/managed/managed_policies.json

Chromedriver is also required and can be installed like so:

CHROME_VER=$(dpkg -s google-chrome-stable | egrep "^Version" | cut -d " " -f2 | cut -d. -f1-3)
CHROMELAB_LINK="https://googlechromelabs.github.io/chrome-for-testing"
CHROMEDRIVER_LINK=$(curl -s $CHROMELAB_LINK/known-good-versions-with-downloads.json | jq -r ".versions[].downloads.chromedriver | select(. != null) | .[].url" | grep linux64 | grep "$CHROME_VER" | tail -1)
wget -O /tmp/chromedriver-linux64.zip $CHROMEDRIVER_LINK

rm -rf /tmp/chromedriver-linux64
unzip -o /tmp/chromedriver-linux64.zip -d /tmp
mv /tmp/chromedriver-linux64/chromedriver /usr/local/bin/
chown root:root /usr/local/bin/chromedriver
chmod 755 /usr/local/bin/chromedriver

Jitsi Debian Repository

The Jibri packages can be found in the stable repository on downloads.jitsi.org. First install the Jitsi repository key onto your system:

curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'

Create a sources.list.d file with the repository:

echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null

Update your package list:

sudo apt-get update

Install the latest jibri

sudo apt-get install jibri

User and Group

  • Jibri is currently meant to be run as a regular system user. This example creatively uses username 'jibri' and group name 'jibri', but any user will do. This has not been tested with the root user.
  • Ensure that the jibri user is in the correct groups to make full access of the audio and video devices. The example jibri account in Ubuntu 16.04 are: "adm","audio","video","plugdev".
sudo usermod -aG adm,audio,video,plugdev jibri

Config files

  • Edit the jibri.conf file (installed to /etc/jitsi/jibri/jibri.conf by default) appropriately. You can look at reference.conf for the default values and an example of how to set up jibri.conf. Only override the values you want to change from their defaults in jibri.conf.
jibri {
    .....
    api {
        xmpp {
            environments = [
                {
                    name = "yourdomain.com"
                    xmpp-server-hosts = ["1.2.3.4"],
                    xmpp-domain = "yourdomain.com"
                    control-login {
                        domain = "auth.yourdomain.com"
                        username = "jibri"
                        password = "jibriauthpass"
                        port = 5222
                    }
                    control-muc {
                        domain = "internal.auth.yourdomain.com"
                        room-name = "JibriBrewery"
                        nickname = "myjibri-1-2-3-4"
                    }
                    call-login {
                        domain = "recorder.yourdomain.com"
                        username = "recorder"
                        password = "jibrirecorderpass"
                    }
                    strip-from-room-domain = "conference."
                    trust-all-xmpp-certs = true
                    usage-timeout = 0
                }
            ]
        }
    }
    .....
}

Logging

By default, Jibri logs to /var/log/jitsi/jibri. If you don't install via the debian package, you'll need to make sure this directory exists (or change the location to which Jibri logs by editing the log config

Configuring a Jitsi Meet environment for Jibri

Jibri requires some settings to be enabled within a Jitsi Meet configuration. These changes include virtualhosts and accounts in Prosody, settings for the jitsi meet web (within config.js) as well as jicofo.conf.

Prosody

Create the internal MUC component entry. This is required so that the jibri clients can be discovered by Jicofo in a MUC that's not externally accessible by jitsi meet users. Add the following in /etc/prosody/prosody.cfg.lua:

-- internal muc component, meant to enable pools of jibri and jigasi clients
Component "internal.auth.yourdomain.com" "muc"
    modules_enabled = {
      "ping";
    }
    -- storage should be "none" for prosody 0.10 and "memory" for prosody 0.11
    storage = "memory"
    muc_room_cache_size = 1000

Create the recorder virtual host entry, to hold the user account for the jibri chrome session. This is used to restrict only authenticated jibri chrome sessions to be hidden participants in the conference being recordered. Add the following in /etc/prosody/prosody.cfg.lua:

VirtualHost "recorder.yourdomain.com"
  modules_enabled = {
    "ping";
  }
  authentication = "internal_hashed"

Setup the two accounts jibri will use:

prosodyctl register jibri auth.yourdomain.com jibriauthpass
prosodyctl register recorder recorder.yourdomain.com jibrirecorderpass

The first account is the one Jibri will use to log into the control MUC (where Jibri will send its status and await commands). The second account is the one Jibri will use as a client in selenium when it joins the call so that it can be treated in a special way by the Jitsi Meet web UI.

Jicofo

Edit /etc/jitsi/jicofo/jicofo.conf, set the appropriate MUC to look for the Jibri Controllers. This should be the same MUC as is referenced in jibri's jibri.conf file. Restart Jicofo after setting this property. It's also suggested to set the pending-timeout to 90 seconds, to allow the Jibri some time to start up before being marked as failed.

jicofo {
  ...
  jibri {
    brewery-jid = "[email protected]"
    pending-timeout = 90 seconds
  }
  ...
}

Jitsi Meet

Edit the /etc/jitsi/meet/yourdomain-config.js file, add/set the following properties:

// recording
config.recordingService = {
  enabled: true,
  sharingEnabled: true,
  hideStorageWarning: false,
};

// liveStreaming
config.liveStreaming = {
  enabled: true,
};

config.hiddenDomain = "recorder.yourdomain.com";

Once recording is enabled in yourdomain-config.js, the recording button will become available in the user interface. However, until a valid jibri is seen by Jicofo, the mesage "Recording currently unavailable" will be displayed when it is pressed. Once a jibri connects successfully, the user will instead be prompted to enter a stream key.

Note: Make sure to update Jibri's jibri.conf appropriately to match any config done above.

Start Jibri

Once you have configured jibri.conf, start the jibri service:

sudo systemctl restart jibri

jibri's People

Contributors

532910 avatar aaronkvanmeerten avatar bbaldino avatar bgrozev avatar cheermao avatar cristianbotiza avatar damencho avatar emrahcom avatar gpolitis avatar hayden-pan avatar horymury avatar hristoterezov avatar jjasghar avatar jonathanlennox avatar jsurkont avatar juancanham avatar michaelkaye avatar netaskd avatar oanaianc avatar paweldomas avatar pedro-nonfree avatar pjmkrpg avatar raluca8x8 avatar realnumber avatar saghul avatar samwhited avatar tes5884 avatar wsoyinka avatar xrnm avatar zwar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jibri's Issues

Meet configuration requires hardcoded focus component domain

By default, hosts.focus is commented out in /etc/jitsi/meet/yourdomain.config.js and will therefore default to focus.<domain>.
Since Jibri's Selenium component connects using recorder.<domain>, it will try (and fail) to find focus on focus.recorder.<domain>.
To work around this, the focus domain must be hardcoded in the config.
Note that this is very tricky to catch via the instructions ("Manually testing Jibri") since it suggests connecting to the regular room URL (sans recorder prefix etc.)

Jibri not working (selenium.common.exceptions.WebDriverException)

root@ip-10-0-1-204:/home/jibri/jibri-xmpp-client# DISPLAY=:0 ./jibriselenium.py -u https://calling-jitsi-jicofo-dev.calling.fun/123
Initializing Driver
2018-03-15 02:37:05,821 DEBUG    POST http://127.0.0.1:55722/session {"capabilities": {"firstMatch": [{}], "alwaysMatch": {"platformName": "any", "browserName": "chrome", "goog:chromeOptions": {"args": ["--use-fake-ui-for-media-stream", "--start-maximized", "--kiosk", "--enabled", "--enable-logging", "--vmodule=*=3", "--disable-infobars", "--alsa-output-device=plug:amix"], "extensions": []}}}, "desiredCapabilities": {"platform": "ANY", "goog:chromeOptions": {"args": ["--use-fake-ui-for-media-stream", "--start-maximized", "--kiosk", "--enabled", "--enable-logging", "--vmodule=*=3", "--disable-infobars", "--alsa-output-device=plug:amix"], "extensions": []}, "version": "", "browserName": "chrome", "loggingPrefs": {"browser": "ALL"}}}

2018-03-15 02:38:05,872 DEBUG    Finished Request
Traceback (most recent call last):
  File "./jibriselenium.py", line 324, in <module>
    js = JibriSeleniumDriver(URL,token,displayname=displayname,email=email,pjsua_flag=pjsua_flag)
  File "./jibriselenium.py", line 69, in __init__
    self.initDriver()
  File "./jibriselenium.py", line 83, in initDriver
    self.driver = webdriver.Chrome(chrome_options=options, desired_capabilities=desired_capabilities)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/chrome/webdriver.py", line 75, in __init__
    desired_capabilities=desired_capabilities)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 154, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 243, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 312, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
  (Driver info: chromedriver=2.36.540471 (9c759b81a907e70363c6312294d30b6ccccc2752),platform=Linux 4.4.0-116-generic x86_64)

And i check jibri-xorg, It also does not work. How to fix it? Thank you.

root@ip-10-0-1-204:/home/jibri/jibri-xmpp-client# service jibri-xorg status
โ— jibri-xorg.service - Jibri Xorg Process
   Loaded: loaded (/etc/systemd/system/jibri-xorg.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

Mar 15 02:36:56 ip-10-0-1-204 systemd[1]: jibri-xorg.service: Service hold-off time over, scheduling restart.
Mar 15 02:36:56 ip-10-0-1-204 systemd[1]: Stopped Jibri Xorg Process.
Mar 15 02:36:56 ip-10-0-1-204 systemd[1]: Started Jibri Xorg Process.
Mar 15 02:36:56 ip-10-0-1-204 systemd[1]: jibri-xorg.service: Main process exited, code=exited, status=217/USER
Mar 15 02:36:56 ip-10-0-1-204 systemd[1]: jibri-xorg.service: Unit entered failed state.
Mar 15 02:36:56 ip-10-0-1-204 systemd[1]: jibri-xorg.service: Failed with result 'exit-code'.
Mar 15 02:36:56 ip-10-0-1-204 systemd[1]: jibri-xorg.service: Service hold-off time over, scheduling restart.
Mar 15 02:36:56 ip-10-0-1-204 systemd[1]: Stopped Jibri Xorg Process.
Mar 15 02:36:56 ip-10-0-1-204 systemd[1]: jibri-xorg.service: Start request repeated too quickly.
Mar 15 02:36:56 ip-10-0-1-204 systemd[1]: Failed to start Jibri Xorg Process.

Configuring Jitsi Recording

Hello,
We need help configuring the recording on Jitsi. I'm attaching a picture of how far we have reached. We need de directions on how to do it.
Thanks for looking into this.
screen shot 2017-03-15 at 6 42 43 am

Multiple recording sessions with jibri.

We have installed jibri and set recording to file.
Now we want to see how to add more jibri servers etc to have multiple parallel recordings.
How to add multiple servers to pool ?

ERROR: Failed audio check, no audio level detected: 1

I have passed the selenium test, ffmpeg test, and youtube stream test, all done and succeed. I even check audio and (I suppose) it succeed. This is the output of check audio from /tmp/jibri-check_audio.log:

Recording raw data '/tmp/jibri-audio_check.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Hardware PCM card 0 'Loopback' device 1 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 44100
  exact rate   : 44100 (44100/1)
  msbits       : 16
  buffer_size  : 22052
  period_size  : 5513
  period_time  : 125011
  tstamp_mode  : NONE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 5513
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 22052
  silence_threshold: 0
  silence_size : 0
  boundary     : 6207086186423386112
  appl_ptr     : 0
  hw_ptr       : 0

But everytime I start live stream an error occurs telling that it failed audio check. Here's the log:

-- Logs begin at Kam 2017-11-02 11:54:21 WIB, end at Kam 2017-11-02 13:48:07 WIB. --
Nov 02 13:22:35 jibri app.py[3473]: 2017-11-02 13:22:35,013 INFO     Creating a client for hostname: my.domain.com with options: {'jidserver_prefix': 'auth.', 'selenium_xmpp_login': '[email protected]', 'boshdomain': 'recorder.my.domain.com', 'jid_username': 'jibri', 'usage_timeout': 0, 'selenium_xmpp_password': 'mypassword', 'roomname': 'TheBrewery', 'selenium_xmpp_prefix': 'recorder.', 'password': 'mypassword', 'roompass': '', 'brewery_prefix': 'conference.', 'mucserver_prefix': 'conference.', 'boshdomain_prefix': 'recorder.', 'nick': 'jibri-41832950736615837', 'xmpp_domain': 'my.domain.com', 'selenium_xmpp_username': 'recorder', 'url': 'https://my.domain.com/%SUBDOMAIN%%ROOM%', 'recording_directory': './recordings', 'room': '[email protected]', 'jid': '[email protected]'}
Nov 02 13:22:35 jibri app.py[3473]: 2017-11-02 13:22:35,017 INFO     jibri_watcher starting up...
Nov 02 13:22:35 jibri app.py[3473]: 2017-11-02 13:22:35,115 INFO      * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
Nov 02 13:22:35 jibri app.py[3473]: 2017-11-02 13:22:35,152 WARNING  jid property deprecated. Use boundjid.bare
Nov 02 13:22:36 jibri app.py[3473]: 2017-11-02 13:22:36,562 INFO     Negotiating TLS
Nov 02 13:22:36 jibri app.py[3473]: 2017-11-02 13:22:36,563 INFO     Using SSL version: TLS 1.0
Nov 02 13:22:36 jibri app.py[3473]: 2017-11-02 13:22:36,707 WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate COULD NOT BE VERIFIED.
Nov 02 13:22:37 jibri app.py[3473]: 2017-11-02 13:22:37,769 INFO     JID set to: [email protected]/8a985663-a5a4-4aab-a881-a73b22bad4f6
Nov 02 13:22:37 jibri app.py[3473]: 2017-11-02 13:22:37,831 WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate expiration COULD NOT BE VERIFIED.
Nov 02 13:22:37 jibri app.py[3473]: 2017-11-02 13:22:37,832 INFO     Starting up client <jibrixmppclient.JibriXMPPClient object at 0x7f3b957afbe0>, connecting to room [email protected] as jibri-41832950736615837
Nov 02 13:22:37 jibri app.py[3473]: 2017-11-02 13:22:37,889 INFO     sending presence: <presence xml:lang="en" to="[email protected]"><jibri-status xmlns="http://jitsi.org/protocol/jibri" status="idle" /></presence>
Nov 02 13:22:37 jibri app.py[3473]: 2017-11-02 13:22:37,893 INFO     Started up client <jibrixmppclient.JibriXMPPClient object at 0x7f3b957afbe0>
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,208 INFO     on_jibri_iq: <iq to="[email protected]/8a985663-a5a4-4aab-a881-a73b22bad4f6" id="amlicmlAYXV0aC50c3QuZWRwbHVzLmJpei84YTk4NTY2My1hNWE0LTRhYWItYTg4MS1hNzNiMjJiYWQ0ZjYAU1dPNXctOTQ3ODAAfGj5zxYb8haA9jrz8CkCzw==" from="[email protected]/focus" type="set"><jibri xmlns="http://jitsi.org/protocol/jibri" recording_mode="stream" streamid="youtube-stream-key" room="[email protected]" action="start" /></iq>
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,213 INFO     sending presence: <presence xml:lang="en" to="[email protected]"><jibri-status xmlns="http://jitsi.org/protocol/jibri" status="busy" /></presence>
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,214 INFO     Client options for host: {'jidserver_prefix': 'auth.', 'selenium_xmpp_login': '[email protected]', 'boshdomain': 'recorder.my.domain.com', 'jid_username': 'jibri', 'usage_timeout': 0, 'selenium_xmpp_password': 'mypassword', 'roomname': 'TheBrewery', 'selenium_xmpp_prefix': 'recorder.', 'password': 'mypassword', 'roompass': '', 'brewery_prefix': 'conference.', 'mucserver_prefix': 'conference.', 'boshdomain_prefix': 'recorder.', 'nick': 'jibri-41832950736615837', 'xmpp_domain': 'my.domain.com', 'selenium_xmpp_username': 'recorder', 'url': 'https://my.domain.com/%SUBDOMAIN%%ROOM%', 'recording_directory': './recordings', 'room': '[email protected]', 'jid': '[email protected]'}
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,215 INFO     Setting xmpp login from client options: [email protected]
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,215 INFO     Setting xmpp password from client options
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,215 INFO     Setting boshdomain from client options recorder.my.domain.com
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,215 INFO     Setting xmpp_domain from client options my.domain.com
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,216 INFO     Setting mucserver_prefix from client options conference.
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,216 INFO     Setting recording_directory from client options ./recordings
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,226 INFO     Start recording callback
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,226 INFO     update_jibri_status
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,226 INFO     looping through queue for host my.domain.com
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,226 INFO     Starting jibri
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,226 INFO     Starting selenium attempt 1/3 pjsua_flag:False
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,227 INFO     overriding config.hosts.domain with boshdomain: recorder.my.domain.com
Nov 02 13:23:51 jibri app.py[3473]: 2017-11-02 13:23:51,227 INFO     starting jibri selenium, url=https://my.domain.com/test#config.iAmRecorder=true&config.externalConnectUrl=null&config.hosts.domain="recorder.my.domain.com", google_account=None, [email protected]
Nov 02 13:24:09 jibri app.py[3473]: 2017-11-02 13:24:09,516 WARNING  ERROR: failed audio check, no audio levels detected: 1
Nov 02 13:24:09 jibri app.py[3473]: 2017-11-02 13:24:09,520 WARNING  jibri detected audio issues during startup, bailing out.
Nov 02 13:24:09 jibri app.py[3473]: 2017-11-02 13:24:09,525 INFO     start_jibri_selenium returned retcode=3 during attempt 1/3
Nov 02 13:24:09 jibri app.py[3473]: 2017-11-02 13:24:09,525 INFO     Starting selenium attempt 2/3 pjsua_flag:False
Nov 02 13:24:09 jibri app.py[3473]: 2017-11-02 13:24:09,526 INFO     overriding config.hosts.domain with boshdomain: recorder.my.domain.com
Nov 02 13:24:09 jibri app.py[3473]: 2017-11-02 13:24:09,526 INFO     starting jibri selenium, url=https://my.domain.com/test#config.iAmRecorder=true&config.externalConnectUrl=null&config.hosts.domain="recorder.my.domain.com", google_account=None, [email protected]
Nov 02 13:24:16 jibri app.py[3473]: 2017-11-02 13:24:16,475 WARNING  ERROR: failed audio check, no audio levels detected: 1
Nov 02 13:24:16 jibri app.py[3473]: 2017-11-02 13:24:16,480 WARNING  jibri detected audio issues during startup, bailing out.
Nov 02 13:24:16 jibri app.py[3473]: 2017-11-02 13:24:16,481 INFO     start_jibri_selenium returned retcode=3 during attempt 2/3
Nov 02 13:24:16 jibri app.py[3473]: 2017-11-02 13:24:16,481 INFO     Starting selenium attempt 3/3 pjsua_flag:False
Nov 02 13:24:16 jibri app.py[3473]: 2017-11-02 13:24:16,481 INFO     overriding config.hosts.domain with boshdomain: recorder.my.domain.com
Nov 02 13:24:16 jibri app.py[3473]: 2017-11-02 13:24:16,484 INFO     starting jibri selenium, url=https://my.domain.com/test#config.iAmRecorder=true&config.externalConnectUrl=null&config.hosts.domain="recorder.my.domain.com", google_account=None, [email protected]
Nov 02 13:24:24 jibri app.py[3473]: 2017-11-02 13:24:24,430 WARNING  ERROR: failed audio check, no audio levels detected: 1
Nov 02 13:24:24 jibri app.py[3473]: 2017-11-02 13:24:24,436 WARNING  jibri detected audio issues during startup, bailing out.
Nov 02 13:24:24 jibri app.py[3473]: 2017-11-02 13:24:24,441 INFO     start_jibri_selenium returned retcode=3 during attempt 3/3
Nov 02 13:24:24 jibri app.py[3473]: 2017-11-02 13:24:24,441 INFO     start_jibri_selenium returned retcode=3
Nov 02 13:24:24 jibri app.py[3473]: 2017-11-02 13:24:24,441 INFO     jibri_stop_callback run with status startup_selenium_error
Nov 02 13:24:24 jibri app.py[3473]: 2017-11-02 13:24:24,442 INFO     queueing error error|startup_selenium_error for host my.domain.com
Nov 02 13:24:24 jibri app.py[3473]: 2017-11-02 13:24:24,442 INFO     queueing job for jibri_watcher
Nov 02 13:24:24 jibri app.py[3473]: 2017-11-02 13:24:24,443 INFO     jibri_watcher received job, now watching ffmpeg and selenium with a timeout of 0.
Nov 02 13:24:24 jibri app.py[3473]: 2017-11-02 13:24:24,443 INFO     jibri_watcher finished loop...
Nov 02 13:24:24 jibri app.py[3473]: 2017-11-02 13:24:24,444 INFO     jibri_watcher starting up...
Nov 02 13:24:24 jibri app.py[3473]: 2017-11-02 13:24:24,956 INFO     got msg from main: error|startup_selenium_error
Nov 02 13:24:24 jibri app.py[3473]: 2017-11-02 13:24:24,963 INFO     sending status update: <iq to="[email protected]/focus" id="2d179cbd-deeb-4b2d-b052-28c1099f9ef8-7" type="set"><jibri xmlns="http://jitsi.org/protocol/jibri" status="failed"><error xmlns="jabber:client" code="504" type="wait"><remote-server-timeout xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Startup error: Selenium error</text><retry xmlns="http://jitsi.org/protocol/jibri" /></error></jibri></iq>
Nov 02 13:24:27 jibri app.py[3473]: 2017-11-02 13:24:27,646 ERROR    Exception in callback jibri_start_callback(<jibrixmppcli...x7f3b957afbe0>, '', 'stream', 'youtube-stream-key', '', '', ...) at /home/jibri/jibri-xmpp-client/app.py:310
Nov 02 13:24:27 jibri app.py[3473]: handle: <Handle jibri_start_callback(<jibrixmppcli...x7f3b957afbe0>, '', 'stream', 'youtube-stream-key', '', '', ...) at /home/jibri/jibri-xmpp-client/app.py:310>
Nov 02 13:24:27 jibri app.py[3473]: Traceback (most recent call last):
Nov 02 13:24:27 jibri app.py[3473]:   File "/usr/lib/python3.5/asyncio/events.py", line 125, in _run
Nov 02 13:24:27 jibri app.py[3473]:     self._callback(*self._args)
Nov 02 13:24:27 jibri app.py[3473]:   File "/home/jibri/jibri-xmpp-client/app.py", line 521, in jibri_start_callback
Nov 02 13:24:27 jibri app.py[3473]:     jibri_stop_callback('startup_selenium_error')
Nov 02 13:24:27 jibri app.py[3473]:   File "/home/jibri/jibri-xmpp-client/app.py", line 794, in jibri_stop_callback
Nov 02 13:24:27 jibri app.py[3473]:     finalize_recording()
Nov 02 13:24:27 jibri app.py[3473]:   File "/home/jibri/jibri-xmpp-client/app.py", line 203, in finalize_recording
Nov 02 13:24:27 jibri app.py[3473]:     call([finalize_recording_script,recording_directory])
Nov 02 13:24:27 jibri app.py[3473]:   File "/usr/lib/python3.5/subprocess.py", line 557, in call
Nov 02 13:24:27 jibri app.py[3473]:     with Popen(*popenargs, **kwargs) as p:
Nov 02 13:24:27 jibri app.py[3473]:   File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
Nov 02 13:24:27 jibri app.py[3473]:     restore_signals, start_new_session)
Nov 02 13:24:27 jibri app.py[3473]:   File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
Nov 02 13:24:27 jibri app.py[3473]:     raise child_exception_type(errno_num, err_msg)
Nov 02 13:24:27 jibri app.py[3473]: PermissionError: [Errno 13] Permission denied
Nov 02 13:47:37 jibri app.py[3473]: 2017-11-02 13:47:37,867 ERROR    Socket Error #104: Connection reset by peer
Nov 02 13:47:37 jibri app.py[3473]: 2017-11-02 13:47:37,868 WARNING  Failed to send b'</stream:stream>'
Nov 02 13:47:37 jibri app.py[3473]: 2017-11-02 13:47:37,869 INFO     Waiting for </stream:stream> from server
Nov 02 13:47:44 jibri app.py[3473]: 2017-11-02 13:47:44,475 INFO     Negotiating TLS
Nov 02 13:47:44 jibri app.py[3473]: 2017-11-02 13:47:44,476 INFO     Using SSL version: TLS 1.0
Nov 02 13:47:44 jibri app.py[3473]: 2017-11-02 13:47:44,836 WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate COULD NOT BE VERIFIED.
Nov 02 13:47:45 jibri app.py[3473]: 2017-11-02 13:47:45,349 INFO     JID set to: [email protected]/e7d2b396-627a-4a7c-88f3-3bebf2a08ea5
Nov 02 13:47:45 jibri app.py[3473]: 2017-11-02 13:47:45,407 WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate expiration COULD NOT BE VERIFIED.
Nov 02 13:47:45 jibri app.py[3473]: 2017-11-02 13:47:45,408 INFO     Starting up client <jibrixmppclient.JibriXMPPClient object at 0x7f3b957afbe0>, connecting to room [email protected] as jibri-41832950736615837
Nov 02 13:47:45 jibri app.py[3473]: 2017-11-02 13:47:45,480 INFO     sending presence: <presence xml:lang="en" to="[email protected]"><jibri-status xmlns="http://jitsi.org/protocol/jibri" status="idle" /></presence>
Nov 02 13:47:45 jibri app.py[3473]: 2017-11-02 13:47:45,482 INFO     Started up client <jibrixmppclient.JibriXMPPClient object at 0x7f3b957afbe0>

Please help, who ever have knowledge in this issue since. Thank you.

Jibri Selenium user had permission issue 'Failed to access your camera'.

Hi All,

I had setup jibri recording feature successfully, we can able to record the JITSI conference in separate file by using start selenium user and ffmpeg command. I have a problem Jibri Selenium user is connected to JITSI Conference and record the conference into a file, In that recorded file we had permission issue 'Failed to access your camera'.

Appreciate any open suggestions.

HeapDumpOnOutOfMemoryError

Streaming is barely working, and I'm seeing a ton of java HeapDumpOnOutOfMemory in htop.
The system has 2GB of RAM, in addition to a 2G swapfile. according to htop, only ~300M of memory is being used.
Do I need to change the amount of memory available to Java? This is on the Jitsi side...

Jibri connection issues

I followed the instructions on the README, on 2 separate machines, and keep having the same issues.

jitsi-meet is installed on a VPS - Jibri is installed on a local box - both are Ubuntu Server 16.04

  • Testing selenium using: DISPLAY=:0 ./jibriselenium.py -u https://URL-TO-MEETING
    • worked, and I see "Live Stream" connect to the video session on the Jitsi side
  • Testing ffmpeg using: ./start-ffmpeg.sh filename.flv
    • failed, no 'flv' file was created, and ffmpeg output was as follows:
ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
  configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, x11grab, from ':0.0+0,0':
  Duration: N/A, start: 1517935134.658646, bitrate: N/A
    Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1280x720, 30 fps, 30 tbr, 1000k tbn, 30 tbc
ALSA lib pcm_hw.c:1700:(_snd_pcm_hw_open) Invalid value for card
[alsa @ 0x1c603a0] cannot open audio device hw:0,1,0 (No such file or directory)
hw:0,1,0: Input/output error
  • Testing youtube using: ./launch_recording.sh null null null MY_STREAM_KEY

    • obviously does nothing, stream shows offline
  • app.py logs the following:

app.py[8066]: 2018-02-06 12:08:01,675 INFO     Waiting for </stream:stream> from server

Any suggestions where to proceed from here?

Thanks!

Error Starting Live Stream

I finally have made it to this state where I can put stream key to start live streaming. I use youtube stream key to do this. But whenever I try to do live stream it fails. Here's log output from jibri service:

-- Logs begin at Kam 2017-11-02 08:51:55 WIB, end at Kam 2017-11-02 09:08:56 WIB. --
Nov 02 08:53:46 jibri app.py[1773]: 2017-11-02 08:53:46,491 INFO     Creating a client for hostname: my.domain.com with options: {'selenium_xmpp_login': '[email protected]', 'password': 'mypassword', 'jid_username': 'jibri', 'mucserver_prefix': 'conference.', 'jidserver_prefix': 'auth.', 'boshdomain_prefix': 'recorder.', 'recording_directory': './recordings', 'boshdomain': 'recorder.my.domain.com', 'selenium_xmpp_username': 'recorder', 'room': '[email protected]', 'jid': '[email protected]', 'xmpp_domain': 'my.domain.com', 'nick': 'jibri-0072226489578415265', 'selenium_xmpp_password': 'mypassword', 'usage_timeout': 0, 'roompass': '', 'roomname': 'TheBrewery', 'brewery_prefix': 'conference.', 'selenium_xmpp_prefix': 'recorder.', 'url': 'https://my.domain.com/%SUBDOMAIN%%ROOM%'}
Nov 02 08:53:46 jibri app.py[1773]: 2017-11-02 08:53:46,498 INFO     jibri_watcher starting up...
Nov 02 08:53:46 jibri app.py[1773]: 2017-11-02 08:53:46,627 INFO      * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
Nov 02 08:53:46 jibri app.py[1773]: 2017-11-02 08:53:46,662 WARNING  jid property deprecated. Use boundjid.bare
Nov 02 08:53:47 jibri app.py[1773]: 2017-11-02 08:53:47,136 INFO     Negotiating TLS
Nov 02 08:53:47 jibri app.py[1773]: 2017-11-02 08:53:47,137 INFO     Using SSL version: TLS 1.0
Nov 02 08:53:47 jibri app.py[1773]: 2017-11-02 08:53:47,209 WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate COULD NOT BE VERIFIED.
Nov 02 08:53:47 jibri app.py[1773]: 2017-11-02 08:53:47,501 INFO     JID set to: [email protected]/2e7d9ea0-9538-4d01-9b0b-efd825a2fae9
Nov 02 08:53:47 jibri app.py[1773]: 2017-11-02 08:53:47,522 WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate expiration COULD NOT BE VERIFIED.
Nov 02 08:53:47 jibri app.py[1773]: 2017-11-02 08:53:47,523 INFO     Starting up client <jibrixmppclient.JibriXMPPClient object at 0x7f3cfb1bbbe0>, connecting to room [email protected] as jibri-0072226489578415265
Nov 02 08:53:47 jibri app.py[1773]: 2017-11-02 08:53:47,548 INFO     sending presence: <presence to="[email protected]" xml:lang="en"><jibri-status xmlns="http://jitsi.org/protocol/jibri" status="idle" /></presence>
Nov 02 08:53:47 jibri app.py[1773]: 2017-11-02 08:53:47,552 INFO     Started up client <jibrixmppclient.JibriXMPPClient object at 0x7f3cfb1bbbe0>
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,504 INFO     on_jibri_iq: <iq from="[email protected]/focus" to="[email protected]/2e7d9ea0-9538-4d01-9b0b-efd825a2fae9" id="amlicmlAYXV0aC50c3QuZWRwbHVzLmJpei8yZTdkOWVhMC05NTM4LTRkMDEtOWIwYi1lZmQ4MjVhMmZhZTkAU1dPNXctODYxOTcAfGj5zxYb8haA9jrz8CkCzw==" type="set"><jibri xmlns="http://jitsi.org/protocol/jibri" action="start" room="[email protected]" streamid="youtube-stream-key" recording_mode="stream" /></iq>
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,512 INFO     sending presence: <presence to="[email protected]" xml:lang="en"><jibri-status xmlns="http://jitsi.org/protocol/jibri" status="busy" /></presence>
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,514 INFO     Client options for host: {'selenium_xmpp_login': '[email protected]', 'password': 'mypassword', 'jid_username': 'jibri', 'mucserver_prefix': 'conference.', 'jidserver_prefix': 'auth.', 'boshdomain_prefix': 'recorder.', 'recording_directory': './recordings', 'boshdomain': 'recorder.my.domain.com', 'selenium_xmpp_username': 'recorder', 'room': '[email protected]', 'jid': '[email protected]', 'xmpp_domain': 'my.domain.com', 'nick': 'jibri-0072226489578415265', 'selenium_xmpp_password': 'mypassword', 'usage_timeout': 0, 'roompass': '', 'roomname': 'TheBrewery', 'brewery_prefix': 'conference.', 'selenium_xmpp_prefix': 'recorder.', 'url': 'https://my.domain.com/%SUBDOMAIN%%ROOM%'}
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,515 INFO     Setting xmpp login from client options: [email protected]
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,516 INFO     Setting xmpp password from client options
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,516 INFO     Setting boshdomain from client options recorder.my.domain.com
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,516 INFO     Setting xmpp_domain from client options my.domain.com
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,517 INFO     Setting mucserver_prefix from client options conference.
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,517 INFO     Setting recording_directory from client options ./recordings
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,522 INFO     Start recording callback
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,522 INFO     update_jibri_status
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,522 INFO     looping through queue for host my.domain.com
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,523 INFO     Starting jibri
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,523 INFO     Starting selenium attempt 1/3 pjsua_flag:False
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,525 INFO     overriding config.hosts.domain with boshdomain: recorder.my.domain.com
Nov 02 08:57:09 jibri app.py[1773]: 2017-11-02 08:57:09,525 INFO     starting jibri selenium, url=https://my.domain.com/test#config.iAmRecorder=true&config.externalConnectUrl=null&config.hosts.domain="recorder.my.domain.com", google_account=None, [email protected]
Nov 02 08:57:39 jibri app.py[1773]: 2017-11-02 08:57:39,577 ERROR    Jibri Startup exception during attempt 1/3: Remote end closed connection without response
Nov 02 08:57:39 jibri app.py[1773]: 2017-11-02 08:57:39,583 INFO     start_jibri_selenium returned retcode=9999 during attempt 1/3
Nov 02 08:57:39 jibri app.py[1773]: 2017-11-02 08:57:39,584 INFO     Starting selenium attempt 2/3 pjsua_flag:False
Nov 02 08:57:39 jibri app.py[1773]: 2017-11-02 08:57:39,585 INFO     overriding config.hosts.domain with boshdomain: recorder.my.domain.com
Nov 02 08:57:39 jibri app.py[1773]: 2017-11-02 08:57:39,586 INFO     starting jibri selenium, url=https://my.domain.com/test#config.iAmRecorder=true&config.externalConnectUrl=null&config.hosts.domain="recorder.my.domain.com", google_account=None, [email protected]
Nov 02 08:58:09 jibri app.py[1773]: 2017-11-02 08:58:09,612 ERROR    Jibri Startup exception during attempt 2/3: Remote end closed connection without response
Nov 02 08:58:09 jibri app.py[1773]: 2017-11-02 08:58:09,620 INFO     start_jibri_selenium returned retcode=9999 during attempt 2/3
Nov 02 08:58:09 jibri app.py[1773]: 2017-11-02 08:58:09,622 INFO     Starting selenium attempt 3/3 pjsua_flag:False
Nov 02 08:58:09 jibri app.py[1773]: 2017-11-02 08:58:09,623 INFO     overriding config.hosts.domain with boshdomain: recorder.my.domain.com
Nov 02 08:58:09 jibri app.py[1773]: 2017-11-02 08:58:09,623 INFO     starting jibri selenium, url=https://my.domain.com/test#config.iAmRecorder=true&config.externalConnectUrl=null&config.hosts.domain="recorder.my.domain.com", google_account=None, [email protected]
Nov 02 08:58:39 jibri app.py[1773]: 2017-11-02 08:58:39,634 ERROR    Jibri Startup exception during attempt 3/3: Remote end closed connection without response
Nov 02 08:58:39 jibri app.py[1773]: 2017-11-02 08:58:39,638 INFO     start_jibri_selenium returned retcode=9999 during attempt 3/3
Nov 02 08:58:39 jibri app.py[1773]: 2017-11-02 08:58:39,640 INFO     start_jibri_selenium returned retcode=9999
Nov 02 08:58:39 jibri app.py[1773]: 2017-11-02 08:58:39,641 INFO     jibri_stop_callback run with status startup_selenium_error
Nov 02 08:58:39 jibri app.py[1773]: 2017-11-02 08:58:39,641 INFO     queueing error error|startup_selenium_error for host my.domain.com
Nov 02 08:58:39 jibri app.py[1773]: 2017-11-02 08:58:39,642 INFO     queueing job for jibri_watcher
Nov 02 08:58:39 jibri app.py[1773]: 2017-11-02 08:58:39,642 INFO     jibri_watcher received job, now watching ffmpeg and selenium with a timeout of 0.
Nov 02 08:58:39 jibri app.py[1773]: 2017-11-02 08:58:39,642 INFO     jibri_watcher finished loop...
Nov 02 08:58:39 jibri app.py[1773]: 2017-11-02 08:58:39,642 INFO     jibri_watcher starting up...
Nov 02 08:58:39 jibri app.py[1773]: chrome: no process found
Nov 02 08:58:39 jibri app.py[1773]: chromedriver: no process found
Nov 02 08:58:39 jibri app.py[1773]: 2017-11-02 08:58:39,724 INFO     got msg from main: error|startup_selenium_error
Nov 02 08:58:39 jibri app.py[1773]: 2017-11-02 08:58:39,730 INFO     sending status update: <iq to="[email protected]/focus" id="583e6e71-763b-4e7c-9601-3f1befa1b4b5-7" type="set"><jibri xmlns="http://jitsi.org/protocol/jibri" status="failed"><error xmlns="jabber:client" code="504" type="wait"><remote-server-timeout xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Startup error: Selenium error</text><retry xmlns="http://jitsi.org/protocol/jibri" /></error></jibri></iq>
Nov 02 08:58:40 jibri app.py[1773]: 2017-11-02 08:58:40,711 ERROR    Exception in callback jibri_start_callback(<jibrixmppcli...x7f3cfb1bbbe0>, '', 'stream', 'youtube-stream-key', '', '', ...) at /home/jibri/jibri-xmpp-client/app.py:310
Nov 02 08:58:40 jibri app.py[1773]: handle: <Handle jibri_start_callback(<jibrixmppcli...x7f3cfb1bbbe0>, '', 'stream', 'youtube-stream-key', '', '', ...) at /home/jibri/jibri-xmpp-client/app.py:310>
Nov 02 08:58:40 jibri app.py[1773]: Traceback (most recent call last):
Nov 02 08:58:40 jibri app.py[1773]:   File "/usr/lib/python3.5/asyncio/events.py", line 125, in _run
Nov 02 08:58:40 jibri app.py[1773]:     self._callback(*self._args)
Nov 02 08:58:40 jibri app.py[1773]:   File "/home/jibri/jibri-xmpp-client/app.py", line 521, in jibri_start_callback
Nov 02 08:58:40 jibri app.py[1773]:     jibri_stop_callback('startup_selenium_error')
Nov 02 08:58:40 jibri app.py[1773]:   File "/home/jibri/jibri-xmpp-client/app.py", line 794, in jibri_stop_callback
Nov 02 08:58:40 jibri app.py[1773]:     finalize_recording()
Nov 02 08:58:40 jibri app.py[1773]:   File "/home/jibri/jibri-xmpp-client/app.py", line 203, in finalize_recording
Nov 02 08:58:40 jibri app.py[1773]:     call([finalize_recording_script,recording_directory])
Nov 02 08:58:40 jibri app.py[1773]:   File "/usr/lib/python3.5/subprocess.py", line 557, in call
Nov 02 08:58:40 jibri app.py[1773]:     with Popen(*popenargs, **kwargs) as p:
Nov 02 08:58:40 jibri app.py[1773]:   File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
Nov 02 08:58:40 jibri app.py[1773]:     restore_signals, start_new_session)
Nov 02 08:58:40 jibri app.py[1773]:   File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
Nov 02 08:58:40 jibri app.py[1773]:     raise child_exception_type(errno_num, err_msg)
Nov 02 08:58:40 jibri app.py[1773]: PermissionError: [Errno 13] Permission denied
Nov 02 08:59:09 jibri app.py[1773]: 2017-11-02 08:59:09,741 WARNING  Timed out waiting for IqWait_583e6e71-763b-4e7c-9601-3f1befa1b4b5-7
Nov 02 08:59:09 jibri app.py[1773]: 2017-11-02 08:59:09,744 ERROR    Failed to send status update: <iq to="[email protected]/focus" id="583e6e71-763b-4e7c-9601-3f1befa1b4b5-7" type="set"><jibri xmlns="http://jitsi.org/protocol/jibri" status="failed"><error xmlns="jabber:client" code="504" type="wait"><remote-server-timeout xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Startup error: Selenium error</text><retry xmlns="http://jitsi.org/protocol/jibri" /></error></jibri></iq>

Please help.
Thank you

Test Youtube Streaming Side Failed

The youtube streaming test failed the handshake event. I do follow the instruction to get youtube stream key, and I double checked the server url and it matches with the one inside ~/scripts/launch_recording.sh.
Here's log output from /tmp/jibri_ffmpeg.out:

ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers

  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609

  configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv

  libavutil      54. 31.100 / 54. 31.100

  libavcodec     56. 60.100 / 56. 60.100

  libavformat    56. 40.101 / 56. 40.101

  libavdevice    56.  4.100 / 56.  4.100

  libavfilter     5. 40.101 /  5. 40.101

  libavresample   2.  1.  0 /  2.  1.  0

  libswscale      3.  1.101 /  3.  1.101

  libswresample   1.  2.101 /  1.  2.101

  libpostproc    53.  3.100 / 53.  3.100

Input #0, x11grab, from ':0.0+0,0':

  Duration: N/A, start: 1509594469.390998, bitrate: N/A

    Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1280x720, 30 fps, 30 tbr, 1000k tbn, 30 tbc

Guessed Channel Layout for  Input Stream #1.0 : stereo

Input #1, alsa, from 'hw:0,1,0':

  Duration: N/A, start: 1509594469.392122, bitrate: 1536 kb/s

    Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s

RTMP_Connect1, handshake failed.

rtmp://a.rtmp.youtube.com/live2/youtube-stream-key: Unknown error occurred

Please help, thank you

Permission denied when trying to run jibriselenium.py

I've got this error when trying to run this command: DISPLAY=:0 ./jibriselenium.py -u https://my.testing.conference

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/common/service.py", line 62, in start
    stdout=self.log_file, stderr=self.log_file)
  File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg)
PermissionError: [Errno 13] Permission denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./jibriselenium.py", line 324, in <module>
    js = JibriSeleniumDriver(URL,token,displayname=displayname,email=email,pjsua_flag=pjsua_flag)
  File "./jibriselenium.py", line 69, in __init__
    self.initDriver()
  File "./jibriselenium.py", line 83, in initDriver
    self.driver = webdriver.Chrome(chrome_options=options, desired_capabilities=desired_capabilities)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/chrome/webdriver.py", line 61, in __init__
    self.service.start()
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/common/service.py", line 74, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home

Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.chrome.service.Service object at 0x7f48d7c4a630>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/common/service.py", line 162, in __del__
    self.stop()
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/common/service.py", line 134, in stop
    if self.process is None:
AttributeError: 'Service' object has no attribute 'process'

I am on Jibri user. I tried to change the /usr/bin/chromedriver owner to jibri but still get the error.
Any ideas how to fix this?
Thank you

Timeout Waiting for Download Bitrate

After check audio succeed, yet another problem appears. This time it reaches timeout when waiting for download bitrate although I'm in a relatively fast internet connection. What do I do?

Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,438 INFO     Client options for host: {'roompass': '', 'nick': 'jibri-19307129379567112', 'password': 'mypassword', 'xmpp_domain': 'my.domain.com', 'selenium_xmpp_login': '[email protected]', 'url': 'https://my.domain.com/%SUBDOMAIN%%ROOM%', 'jid': '[email protected]', 'mucserver_prefix': 'conference.', 'room': '[email protected]', 'boshdomain': 'recorder.my.domain.com', 'selenium_xmpp_prefix': 'recorder.', 'recording_directory': './recordings', 'usage_timeout': 0, 'google_account_password': 'mygoogleaccountpassword', 'jid_username': 'jibri', 'roomname': 'TheBrewery', 'jidserver_prefix': 'auth.', 'boshdomain_prefix': 'recorder.', 'brewery_prefix': 'conference.', 'selenium_xmpp_username': 'recorder', 'google_account': '[email protected]', 'selenium_xmpp_password': 'mypassword'}
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,439 INFO     Setting selenium google account from client options: [email protected]
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,439 INFO     Setting selenium google account password from client options
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,440 INFO     Setting xmpp login from client options: [email protected]
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,440 INFO     Setting xmpp password from client options
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,441 INFO     Setting boshdomain from client options recorder.my.domain.com
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,441 INFO     Setting xmpp_domain from client options my.domain.com
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,441 INFO     Setting mucserver_prefix from client options conference.
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,444 INFO     Setting recording_directory from client options ./recordings
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,446 INFO     Start recording callback
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,448 INFO     update_jibri_status
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,451 INFO     looping through queue for host my.domain.com
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,452 INFO     Starting jibri
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,452 INFO     Starting selenium attempt 1/3 pjsua_flag:False
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,453 INFO     overriding config.hosts.domain with boshdomain: recorder.my.domain.com
Nov 03 10:16:38 jibri app.py[10737]: 2017-11-03 10:16:38,453 INFO     starting jibri selenium, url=https://my.domain.com/test#config.iAmRecorder=true&config.externalConnectUrl=null&config.hosts.domain="recorder.my.domain.com", [email protected], [email protected]
Nov 03 10:16:44 jibri app.py[10737]: SIGNAL COUNT: 10986
Nov 03 10:16:44 jibri app.py[10737]: SUCCESS 0
Nov 03 10:16:44 jibri app.py[10737]: 2017-11-03 10:16:44,640 INFO     Audio levels confirmed OK.
Nov 03 10:16:44 jibri app.py[10737]: 2017-11-03 10:16:44,644 INFO     Launching URL: https://my.domain.com/test#config.iAmRecorder=true&config.externalConnectUrl=null&config.hosts.domain="recorder.my.domain.com"
Nov 03 10:16:44 jibri app.py[10737]: 2017-11-03 10:16:44,645 INFO     Logging in with google account
Nov 03 10:16:45 jibri app.py[10737]: 2017-11-03 10:16:45,889 INFO     Exception occurred logging into google: Message: no such element: Unable to locate element: {"method":"id","selector":"Email"}
Nov 03 10:16:45 jibri app.py[10737]:   (Session info: chrome=62.0.3202.75)
Nov 03 10:16:45 jibri app.py[10737]:   (Driver info: chromedriver=2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 4.4.0-98-generic x86_64)
Nov 03 10:16:45 jibri app.py[10737]: 2017-11-03 10:16:45,897 INFO     Google Login completed one way or another
Nov 03 10:16:45 jibri app.py[10737]: 2017-11-03 10:16:45,899 INFO     setting jibri identifiers: display Live Stream -  email [email protected]
Nov 03 10:16:48 jibri app.py[10737]: 2017-11-03 10:16:48,788 INFO     setting jibri identifiers: xmpp_username_override [email protected]
Nov 03 10:16:50 jibri app.py[10737]: 2017-11-03 10:16:50,170 INFO     starting to wait for XMPPConnected
Nov 03 10:16:50 jibri app.py[10737]: 2017-11-03 10:16:50,232 INFO     waiting +5 = 0 < 60 for XMPPConnected
Nov 03 10:16:55 jibri app.py[10737]: 2017-11-03 10:16:55,244 INFO     XMPP connected, done waiting
Nov 03 10:16:55 jibri app.py[10737]: 2017-11-03 10:16:55,248 INFO     starting to wait for DownloadBitrate
Nov 03 10:16:55 jibri app.py[10737]: 2017-11-03 10:16:55,259 INFO     waiting +5 = 0 < 60 for DownloadBitrate
Nov 03 10:17:00 jibri app.py[10737]: 2017-11-03 10:17:00,273 INFO     waiting +5 = 5 < 60 for DownloadBitrate
Nov 03 10:17:05 jibri app.py[10737]: 2017-11-03 10:17:05,282 INFO     waiting +5 = 10 < 60 for DownloadBitrate
Nov 03 10:17:10 jibri app.py[10737]: 2017-11-03 10:17:10,294 INFO     waiting +5 = 15 < 60 for DownloadBitrate
Nov 03 10:17:15 jibri app.py[10737]: 2017-11-03 10:17:15,304 INFO     waiting +5 = 20 < 60 for DownloadBitrate
Nov 03 10:17:20 jibri app.py[10737]: 2017-11-03 10:17:20,316 INFO     waiting +5 = 25 < 60 for DownloadBitrate
Nov 03 10:17:25 jibri app.py[10737]: 2017-11-03 10:17:25,326 INFO     waiting +5 = 30 < 60 for DownloadBitrate
Nov 03 10:17:30 jibri app.py[10737]: 2017-11-03 10:17:30,342 INFO     waiting +5 = 35 < 60 for DownloadBitrate
Nov 03 10:17:35 jibri app.py[10737]: 2017-11-03 10:17:35,355 INFO     waiting +5 = 40 < 60 for DownloadBitrate
Nov 03 10:17:40 jibri app.py[10737]: 2017-11-03 10:17:40,368 INFO     waiting +5 = 45 < 60 for DownloadBitrate
Nov 03 10:17:45 jibri app.py[10737]: 2017-11-03 10:17:45,379 INFO     waiting +5 = 50 < 60 for DownloadBitrate
Nov 03 10:17:50 jibri app.py[10737]: 2017-11-03 10:17:50,386 INFO     waiting +5 = 55 < 60 for DownloadBitrate
Nov 03 10:17:55 jibri app.py[10737]: 2017-11-03 10:17:55,394 INFO     Timed out waiting for download bitrate
Nov 03 10:17:55 jibri app.py[10737]: 2017-11-03 10:17:55,400 ERROR    Jibri Startup exception during attempt 1/3: unorderable types: NoneType() > int()
Nov 03 10:17:55 jibri app.py[10737]: 2017-11-03 10:17:55,401 INFO     start_jibri_selenium returned retcode=9999 during attempt 1/3
Nov 03 10:17:55 jibri app.py[10737]: 2017-11-03 10:17:55,402 INFO     Starting selenium attempt 2/3 pjsua_flag:False
Nov 03 10:17:55 jibri app.py[10737]: 2017-11-03 10:17:55,402 INFO     overriding config.hosts.domain with boshdomain: recorder.my.domain.com
Nov 03 10:17:55 jibri app.py[10737]: 2017-11-03 10:17:55,403 INFO     starting jibri selenium, url=https://my.domain.com/test#config.iAmRecorder=true&config.externalConnectUrl=null&config.hosts.domain="recorder.my.domain.com", [email protected], [email protected]
Nov 03 10:18:00 jibri app.py[10737]: 2017-11-03 10:18:00,560 WARNING  ERROR: failed audio check, no audio levels detected: 1
Nov 03 10:18:00 jibri app.py[10737]: 2017-11-03 10:18:00,568 WARNING  jibri detected audio issues during startup, bailing out.
Nov 03 10:18:00 jibri app.py[10737]: 2017-11-03 10:18:00,568 INFO     start_jibri_selenium returned retcode=3 during attempt 2/3
Nov 03 10:18:00 jibri app.py[10737]: 2017-11-03 10:18:00,569 INFO     Starting selenium attempt 3/3 pjsua_flag:False
Nov 03 10:18:00 jibri app.py[10737]: 2017-11-03 10:18:00,584 INFO     overriding config.hosts.domain with boshdomain: recorder.my.domain.com
Nov 03 10:18:00 jibri app.py[10737]: 2017-11-03 10:18:00,584 INFO     starting jibri selenium, url=https://my.domain.com/test#config.iAmRecorder=true&config.externalConnectUrl=null&config.hosts.domain="recorder.my.domain.com", [email protected], [email protected]
Nov 03 10:18:05 jibri app.py[10737]: 2017-11-03 10:18:05,764 WARNING  ERROR: failed audio check, no audio levels detected: 1
Nov 03 10:18:05 jibri app.py[10737]: 2017-11-03 10:18:05,769 WARNING  jibri detected audio issues during startup, bailing out.
Nov 03 10:18:05 jibri app.py[10737]: 2017-11-03 10:18:05,770 INFO     start_jibri_selenium returned retcode=3 during attempt 3/3
Nov 03 10:18:05 jibri app.py[10737]: 2017-11-03 10:18:05,770 INFO     start_jibri_selenium returned retcode=3
Nov 03 10:18:05 jibri app.py[10737]: 2017-11-03 10:18:05,771 INFO     jibri_stop_callback run with status startup_selenium_error
Nov 03 10:18:05 jibri app.py[10737]: 2017-11-03 10:18:05,771 INFO     queueing error error|startup_selenium_error for host my.domain.com
Nov 03 10:18:05 jibri app.py[10737]: 2017-11-03 10:18:05,771 INFO     queueing job for jibri_watcher
Nov 03 10:18:05 jibri app.py[10737]: 2017-11-03 10:18:05,772 INFO     jibri_watcher received job, now watching ffmpeg and selenium with a timeout of 0.
Nov 03 10:18:05 jibri app.py[10737]: 2017-11-03 10:18:05,777 INFO     jibri_watcher finished loop...
Nov 03 10:18:05 jibri app.py[10737]: 2017-11-03 10:18:05,777 INFO     jibri_watcher starting up...
Nov 03 10:18:06 jibri app.py[10737]: 2017-11-03 10:18:06,289 INFO     got msg from main: error|startup_selenium_error
Nov 03 10:18:06 jibri app.py[10737]: 2017-11-03 10:18:06,295 INFO     sending status update: <iq id="feaf3f2a-55ca-493b-a138-3c89a6ffd190-D" to="[email protected]/focus" type="set"><jibri xmlns="http://jitsi.org/protocol/jibri" status="failed"><error xmlns="jabber:client" code="504" type="wait"><remote-server-timeout xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Startup error: Selenium error</text><retry xmlns="http://jitsi.org/protocol/jibri" /></error></jibri></iq>
Nov 03 10:18:08 jibri app.py[10737]: 2017-11-03 10:18:08,935 INFO     update_jibri_status
Nov 03 10:18:08 jibri app.py[10737]: 2017-11-03 10:18:08,939 INFO     looping through queue for host my.domain.com
Nov 03 10:18:08 jibri app.py[10737]: 2017-11-03 10:18:08,941 INFO     queueing status stopped for host my.domain.com
Nov 03 10:18:08 jibri app.py[10737]: 2017-11-03 10:18:08,941 INFO     update_jibri_status
Nov 03 10:18:08 jibri app.py[10737]: 2017-11-03 10:18:08,944 INFO     looping through queue for host my.domain.com
Nov 03 10:18:08 jibri app.py[10737]: 2017-11-03 10:18:08,944 INFO     queueing status idle for host my.domain.com
Nov 03 10:18:08 jibri app.py[10737]: 2017-11-03 10:18:08,944 INFO     jibri_start_callback completed...
Nov 03 10:18:09 jibri app.py[10737]: 2017-11-03 10:18:09,291 INFO     got msg from main: stopped
Nov 03 10:18:09 jibri app.py[10737]: 2017-11-03 10:18:09,291 INFO     sending status update: <iq id="feaf3f2a-55ca-493b-a138-3c89a6ffd190-F" to="[email protected]/focus" type="set"><jibri xmlns="http://jitsi.org/protocol/jibri" status="off" /></iq>
Nov 03 10:18:39 jibri app.py[10737]: 2017-11-03 10:18:39,325 WARNING  Timed out waiting for IqWait_feaf3f2a-55ca-493b-a138-3c89a6ffd190-F
Nov 03 10:18:39 jibri app.py[10737]: 2017-11-03 10:18:39,326 ERROR    Failed to send status update: <iq id="feaf3f2a-55ca-493b-a138-3c89a6ffd190-F" to="[email protected]/focus" type="set"><jibri xmlns="http://jitsi.org/protocol/jibri" status="off" /></iq>
Nov 03 10:18:39 jibri app.py[10737]: 2017-11-03 10:18:39,326 INFO     got msg from main: idle
Nov 03 10:18:39 jibri app.py[10737]: 2017-11-03 10:18:39,326 INFO     sending presence: <presence to="[email protected]" xml:lang="en"><jibri-status xmlns="http://jitsi.org/protocol/jibri" status="idle" /></presence>

Thank you

jibri - Recording and saving video file

Hi,
I have installed JIBRI with the instructions provided here.
I tested jibri using start-ffmpeg.sh and it created new filename.flv file but it contains only "Connecting" message on the blank screen.

When I connected jibri to jitsi-meet conference and start the "jibri-xmpp" service, an user "Fellow Jitster" has been connected to the given Conference, recorded video does not show the actual video of the conference participants, but only the "Connecting" message.

Please let me know how to fix this issue and what additional configurations to be done .
Thanks in advance.

The live streaming service is currently unavailable

Hi devs,

https://github.com/jitsi/jibri/blob/master/README.md#manually-testing-jibri

  1. Selenium check OKAY
$ DISPLAY=:0 ./jibriselenium.py -u https://MYDOMAIN/ROOMNAME
Initializing Driver

...

e01dc81b09e8834028ea7", "script": "return APP.conference.getStats();", "args": []}
2017-04-22 12:19:49,086 DEBUG    Finished Request
Current bitrate: 721

selenium_login

  1. Youtube check OKAY

./launch_recording.sh null null null MYSTREAMKEY

youtube_login

  1. FFMPEG / .flv check OKAY

./start-ffmpeg.sh rtmp://a.rtmp.youtube.com/live2/MYSTREAMKEY

ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
  configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, x11grab, from ':0.0+0,0':
  Duration: N/A, start: 1492862805.282827, bitrate: N/A
    Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1280x720, 30 fps, 30 tbr, 1000k tbn, 30 tbc
Guessed Channel Layout for  Input Stream #1.0 : stereo
Input #1, alsa, from 'hw:0,1,0':
  Duration: N/A, start: 1492862805.284758, bitrate: 1536 kb/s
    Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
[libx264 @ 0x2314d20] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 0x2314d20] profile High, level 3.1
[libx264 @ 0x2314d20] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=2 lookahead_threads=2 sliced_threads=1 slices=2 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=1 keyint=60 keyint_min=6 scenecut=40 intra_refresh=0 rc_lookahead=0 rc=crf mbtree=0 crf=25.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=2976 vbv_bufsize=5952 crf_max=0.0 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
**Output #0, flv, to 'rtmp://a.rtmp.youtube.com/live2/MYSTREAMKEY':**
  Metadata:
    encoder         : Lavf56.40.101
    Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 1280x720, q=-1--1, max. 2976 kb/s, 30 fps, 1k tbn, 30 tbc
    Metadata:
      encoder         : Lavc56.60.100 libx264
    Stream #0:1: Audio: mp3 (libmp3lame) ([2][0][0][0] / 0x0002), 44100 Hz, stereo, s16p, max. 2976 kb/s
    Metadata:
      encoder         : Lavc56.60.100 libmp3lame
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
  Stream #1:0 -> #0:1 (pcm_s16le (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
^Came= 2853 fps= 30 q=21.0 size=    1766kB time=00:01:35.10 bitrate= 152.1kbits/s

File plays fine when downloaded on to PC. it has 1:35 time and its black. The reason of black screen is because i have no video to stream (*this issue title )

  1. configuration
/etc/jitsi/meet/MYDOMAIN-config.js

// RECORDING THE MEETINGS
enableRecording: true,
recordingType: 'jibri',
hiddenDomain: 'recorder.MYDOMAIN',
  1. system info
    chrome 58
    chromedriver 2.29 Linux 64bit.
    jitsi-meet nightly bulid
  • The result of Start / Stop Live stream button inside the meeting toolbar:

error

  1. the test is to run two commands at the same time:**
1. $ DISPLAY=:0 ./jibriselenium.py -u https://MYDOMAIN/ROOMNAME
2. $ ./start-ffmpeg.sh rtmp://a.rtmp.youtube.com/live2/MYSTREAMKEY

Youtube stream will work until ./jibriselenium.py finishes its 60sec test,
thought there are some errors and strange looking faces :)

Running Jibri with Jitsi-Meet application to record audio

Can someone please explain how we can use jibri to record audio for a multi-user conference in Jitsi Meet? I have cloned the repo but I don't understand how to run the shell to record audio for a conference. The documentation is not very clear on this. Any help would be highly appreciated!

Can not record multiple sessions at the same time?

in the doc:
"It is intended to be run on a separate machine (or a VM), with no other applications using the display or audio devices. Only one recording at a time is supported on a single jibri."

Is it definitely impossible to record more than one at a time?

If I wanted to record or trasminitr to youtube many sessions at the same time what should I do?

Thank you

Pjsua crashing on trying to use cloop as capture device

Hi,

A while ago I saw a demonstration of Jitsi using Jibri for connecting a videoroom to a Jitsi videoconference: https://www.youtube.com/watch?v=TGloLKOrvmo&t=1306s. I would love to reproduce this result, but I am having trouble getting pjsua to work correctly.

I have set the pjsua flags in app.py and jibriselenium.py to true and the start-pjsua.sh script is called. I also changed --alsa-input-device=plughw:1,1 to --alsa-input-device=plug:asnoop in jibriselenium.py on line 63. I compiled pjproject 2.7.1 with ./configure --disable-speex-aec --disable-speex-codec. In start-pjsua.sh I changed CAPTURE_DEV=23 and PLAYBACK_DEV=24 to the ids of cloop and ploop.

I am using a pjsua.config with the following params:
--local-port 0 --id sip:[email protected] --realm * --username 100 --password secretpassword

However pjsua crashes with a segfault (139) everytime I try to start it. Yesterday I send an email to the jitsi-users mailing list (http://lists.jitsi.org/pipermail/users/2017-December/013803.html) but so far I have not been lucky enough to receive a reply.

Could someone give me some insight in what I am missing here? A bit of documentation on how to use pjsua with Jibri would also be nice :)

Recipient not in room

Hi.
I installed jibri. when i start services some user connects in room. room name is added in config.json.
the moderators options goes to this jibri user.
when i trying start streaming, in jitsi server i getting error like: ignored from non moderator user.

when i doing so that this jibri user is not moderator and trying start streaming, in jitsi server getting message like: Recipient not in room. And starting streaming is failing.

How to do so as in meet.jit.si (there is no connected some user)?
And what i must correct to start streaming?

p.s. when i trying self test as documented, all works fine. i getting connecting image in youtube stream page.

Stuck on Starting Live Stream...

Hi all,

I got it working till the input of a stream key. But after entering it, Jitsi meeting room shows "Starting Live Stream..." window and after 1.5 minutes shows "Live stream failed to start" message.

Everything works fine if I do this selenium test with the same stream key:
./launch_recording.sh null null null STREAM_KEY
I can see that stream on YouTube.

But can't launch it in actual meeting room. Also I noticed these jicofo logs:

Jicofo 2018-03-29 19:15:19.222 INFO: [36] org.jitsi.jicofo.recording.jibri.JibriDetector.notifyJibriStatus().169 Jibri: [email protected]/jibri-5643991639678753 available: false

Jicofo 2018-03-29 19:16:49.174 SEVERE: [73] org.jitsi.jicofo.recording.jibri.JibriSession.log() Jibri pending timeout! [email protected]

Note that first message shows that "Jibri: ... available: false" by some reason, however all processes are started fine: jibri-xorg, jibri-icewm and jibri-xmpp.

Any way to fix or debug this further?

Thanks.

Use virtual soundcard for recording

Using hardware soundcard limits to only single recording per machine. You can consider using virtual soundcards with pulse audio:

#!/bin/bash

UUID=`uuidgen`
MID=`pactl load-module module-null-sink sink_name=$UUID`
pacmd update-sink-proplist $UUID device.description=$UUID

DISPLAY=:$DISP PULSE_SINK=$UUID google-chrome --kiosk --user-data-dir=chrome-$UUID.tmp https://www.youtube.com/watch?v=hSwg4fIgthU &

PULSE_SOURCE=$UUID.monitor ffmpeg -y \
  -video_size 800x600 -framerate 30 -r 30 -f x11grab -draw_mouse 0 -i :$DISP.0 \
  -f pulse -i default -vcodec libx264 -preset fast output-$UUID.mp4 &

# wait until done

pactl unload-module $MID

Also note the -draw_mouse 0 parameter so you don't need to move the pointer to the edge of the screen.

Jibri startup exception

Hi,

I installed Jibri on Ubuntu 16.04 by following the README. I am able to start a live stream in Jitsi Meet. However, Jibri crashes during starting Selenium with the message start_jibri_selenium returned retcode=9999.

Starting jibriselenium.py manually doesn't show any errors. starting the launch_recording.sh script does also work. Starting both manually results in a successful live stream to YouTube.

The weird part is what is been shown on DISPLAY=:0 when Jibri is started from Jitsi Meet. A white screen is shown briefly and after that a piano sound is being played (this has been recorded manually).

I am using Google Chrome 64.0.3282.119 and ChromeDriver 2.35.528139.

edit
Discovered that the piano sound is playing because the audio needs to be checked.
app.py times out on executing js.driver.get(audio_url) on line 793

When I skip the audio check entirely, everything seems to be working fine. Chrome has joined the video conference and ffmpeg is capturing and streaming DISPLAY=:0.

unable to see video stream button on in jitsi-meet

Hello,

We have installed jits-meet on our site https://jetsofts.com and its working but we are unable to see start/stop video stream option on that and also we have tried to install all needed packages for jibri but live streaming is not working and we hope we get needful help here.
awaiting for the response.

Thank you

New Jibri Install

OK I'm lost with the new instructions and the new version.
I'm using ubuntu 16.04 and using the repository version of jist-meet.
I've followed the install pre-requisites, but it doesn't actually stipulate how to install the rest of jibri. What's the deal? @aaronkvanmeerten any ideas?

Cannot start jibri-xorg.service and jibri-icewm.service

After I follow the instructions, I then try to run jibri-xorg.service and jibri-icewm.service. But when I check using sudo service jibri-xorg status it's not running
Here's the output:

jibri@jibri:~$ sudo service jibri-xorg status
[sudo] password for jibri: 
โ— jibri-xorg.service - Jibri Xorg Process
   Loaded: loaded (/etc/systemd/system/jibri-xorg.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

Nov 01 15:56:34 jibri systemd[1]: jibri-xorg.service: Service hold-off time over, scheduling restart.
Nov 01 15:56:34 jibri systemd[1]: Stopped Jibri Xorg Process.
Nov 01 15:56:34 jibri systemd[1]: Started Jibri Xorg Process.
Nov 01 15:56:34 jibri systemd[1]: jibri-xorg.service: Main process exited, code=exited, status=1/FAILURE
Nov 01 15:56:34 jibri systemd[1]: jibri-xorg.service: Unit entered failed state.
Nov 01 15:56:34 jibri systemd[1]: jibri-xorg.service: Failed with result 'exit-code'.
Nov 01 15:56:35 jibri systemd[1]: jibri-xorg.service: Service hold-off time over, scheduling restart.
Nov 01 15:56:35 jibri systemd[1]: Stopped Jibri Xorg Process.
Nov 01 15:56:35 jibri systemd[1]: jibri-xorg.service: Start request repeated too quickly.
Nov 01 15:56:35 jibri systemd[1]: Failed to start Jibri Xorg Process.

Please help.
Thanks

Live Streaming Service is Currently Unavailable

So I followed the directions on install right down to the letter, but I keep getting this when I load jitsi-meet up. "Live Streaming Service is Currently Unavailable. Please try again later."

SSL handshake issue

My setup: jibri runs on a separate machine from jitsi-meet, plain setup:
Prosody logs can see the incoming connection but sleekxmpp complains about TLS negotiation.
The prosody server uses a valid certificate (wildcard, used even for https)

Tried with both sleekxmpp 1.3.1 and 1.4.0 on ubuntu 1server 16.04

Negotiating TLS
2016-09-11 09:04:46,941 INFO Using SSL version: TLSv1
2016-09-11 09:04:46,980 ERROR Could not match certificate against hostname: ww.example.com

Any suggestion?

Jibri keeps failing to start

Here's my setup
Server B: Jitsi server with ip 192.168.1.2 (Not Actual IP just representative but accesssable via the web.)
Server A: Web Server that is pointing an A Record of hangout.mydomain.org to 192.168.1.2

Server A's hostname is set as hangout.mydomain.org

I have followed every install to the "Letter"

There is only one user account "jibri" as stated in the install instructions.

But jibri still will not broadcast to YouTube or my custom RTMP Server!

These are the errors I keep getting.

Apr 02 14:47:55 hangout app.py[3591]: 2018-04-02 14:47:55,715 INFO     Starting selenium attempt 1/3 pjsua_flag:False

Apr 02 14:47:55 hangout app.py[3591]: 2018-04-02 14:47:55,715 INFO     starting jibri selenium, url=https://hangout.mydomain.org/test#config.iAmRecorder=true&config.externalConnectUrl=null, google_account=None, [email protected]

Apr 02 14:48:25 hangout app.py[3591]: 2018-04-02 14:48:25,825 ERROR    Jibri Startup exception during attempt 1/3: Remote end closed connection without response

Apr 02 14:48:25 hangout app.py[3591]: 2018-04-02 14:48:25,829 INFO     start_jibri_selenium returned retcode=9999 during attempt 1/3

Apr 02 14:48:25 hangout app.py[3591]: 2018-04-02 14:48:25,831 INFO     Starting selenium attempt 2/3 pjsua_flag:False

Apr 02 14:48:25 hangout app.py[3591]: 2018-04-02 14:48:25,836 INFO     starting jibri selenium, url=https://hangout.mydomain.org/test#config.iAmRecorder=true&config.externalConnectUrl=null, google_account=None, [email protected]

Apr 02 14:48:55 hangout app.py[3591]: 2018-04-02 14:48:55,947 ERROR    Jibri Startup exception during attempt 2/3: Remote end closed connection without response

Apr 02 14:48:55 hangout app.py[3591]: 2018-04-02 14:48:55,949 INFO     start_jibri_selenium returned retcode=9999 during attempt 2/3

Apr 02 14:48:55 hangout app.py[3591]: 2018-04-02 14:48:55,949 INFO     Starting selenium attempt 3/3 pjsua_flag:False

Apr 02 14:48:55 hangout app.py[3591]: 2018-04-02 14:48:55,951 INFO     starting jibri selenium, url=https://hangout.mydomain.org/test#config.iAmRecorder=true&config.externalConnectUrl=null, google_account=None, [email protected]

I have tried the boshdomain fix, it does not work!

Please someone, anyone help!

Cannot start test ffmpeg

I try to run ./start-ffmpeg.sh from scripts folder, but I get nothing.
When I check the /tmp/jibri-ffmpeg.out this is the log. Can you help?

ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
  configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_6$
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, x11grab, from ':0.0+0,0':
  Duration: N/A, start: 1496036935.191281, bitrate: N/A
    Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1280x720, 30 fps, 30 tbr, 1000k tbn, 30 tbc
ALSA lib pcm_hw.c:1700:(_snd_pcm_hw_open) Invalid value for card
[alsa @ 0x24ba1c0] cannot open audio device hw:0,1,0 (No such file or directory)
hw:0,1,0: Input/output error

boshdomain sent to selenium with quotes

Hi,

In my config.json, I have an xmpp_domain and bosh_prefix set, therefor, in app.py, it composes a boshdomain variable that is sent along in a url at https://github.com/jitsi/jibri/blob/master/jibri-xmpp-client/app.py#L736
url = "%s&config.hosts.domain=\"%s\""%(url,boshdomain)

But it's surrounded by quotes, and selenium always returned a failure.

Nov 29 15:20:19 lab.oneofmyclients.com app.py[26850]: 2017-11-29 15:20:19,593 INFO     Launching URL: https://meeting.oneofmyclients.com/blablabla#config.iAmRecorder=true&config.externalConnectUrl=null&config.hosts.domain="recorder.meeting.oneofmyclients.com"
Nov 29 15:20:19 lab.oneofmyclients.com app.py[26850]: 2017-11-29 15:20:19,593 INFO     setting jibri identifiers: display Live Stream -  email [email protected]
Nov 29 15:20:21 lab.oneofmyclients.com app.py[26850]: 2017-11-29 15:20:21,511 INFO     setting jibri identifiers: xmpp_username_override [email protected]
Nov 29 15:20:22 lab.oneofmyclients.com app.py[26850]: 2017-11-29 15:20:22,652 INFO     starting to wait for XMPPConnected
Nov 29 15:20:22 lab.oneofmyclients.com app.py[26850]: 2017-11-29 15:20:22,662 INFO     waiting +5 = 0 < 10 for XMPPConnected
Nov 29 15:20:27 lab.oneofmyclients.com app.py[26850]: 2017-11-29 15:20:27,680 INFO     XMPP connected, done waiting
Nov 29 15:20:27 lab.oneofmyclients.com app.py[26850]: 2017-11-29 15:20:27,680 INFO     starting to wait for DownloadBitrate
Nov 29 15:20:27 lab.oneofmyclients.com app.py[26850]: 2017-11-29 15:20:27,690 INFO     waiting +2 = 0 < 10 for DownloadBitrate
Nov 29 15:20:29 lab.oneofmyclients.com app.py[26850]: 2017-11-29 15:20:29,700 INFO     waiting +2 = 2 < 10 for DownloadBitrate
Nov 29 15:20:31 lab.oneofmyclients.com app.py[26850]: 2017-11-29 15:20:31,704 ERROR    Unexpected error:<class 'ConnectionRefusedError'>
Nov 29 15:20:31 lab.oneofmyclients.com app.py[26850]: 2017-11-29 15:20:31,705 INFO     waiting +2 = 4 < 10 for DownloadBitrate
...
Jicofo 2017-11-29 15:20:59.928 INFO: [127] org.jitsi.jicofo.recording.jibri.JibriSession.log() Updating status from JIBRI: <iq to='[email protected]/focus20655029170335138' from='[email protected]/jibri-09112732807474222' id='Zm9jdXNAYXV0aC5tZWV0aW5nLmFidGFzdHkuY29tL2ZvY3VzMjA2NTUwMjkxNzAzMzUxMzgAZWJmNjA2ZDUtNWM2ZS00NDBmLThiMTctZTU5MDE2NTYxZTU5LUMAFRRPQvGqsQbEEQ+l+XmBjQ==' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' status='failed'/></iq> for [email protected]
Jicofo 2017-11-29 15:20:59.928 INFO: [127] org.jitsi.jicofo.recording.jibri.JibriRecorder.log() Publish new JIBRI status: <jibri-recording-status xmlns='http://jitsi.org/protocol/jibri' status='failed'><error type='wait'><remote-server-timeout xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/><text xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>Startup error: Selenium error</text><retry xmlns='http://jitsi.org/protocol/jibri' xmlns:stream='http://etherx.jabber.org/streams'></retry></error></jibri-recording-status> in: [email protected]
Jicofo 2017-11-29 15:20:59.929 INFO: [127] org.jitsi.jicofo.recording.jibri.JibriRecorder.log() Publish new JIBRI status: <jibri-recording-status xmlns='http://jitsi.org/protocol/jibri' status='busy'/> in: [email protected]

Changing it to this:
url = "%s&config.hosts.domain=%s"%(url,boshdomain)
works like a charm and I managed to start stop and start over again multiple times putting my test face on youtube...

Seems issues #53 and #56 have the same problem in logs

Would this be a valid fix ?

Best,
JaXX./.

Can't start recording (live stream) - Ffmpeg Errors

This is from my jibri log:

SEVERE: [38] org.jitsi.jibri.capture.ffmpeg.executor.impl.AbstractFfmpegExecutor.error() Ffmpeg is running but doesn't appear to be encoding:
May 3 15:44:15 host119 launch.sh[909]: 2018-05-03 15:44:15.638 SEVERE: [38] org.jitsi.jibri.capture.ffmpeg.executor.impl.AbstractFfmpegExecutor.error() Ffmpeg is running but doesn't appear to be encoding:
May 3 15:44:16 host119 launch.sh[909]: 2018-05-03 15:44:16.638 SEVERE: [38] org.jitsi.jibri.capture.ffmpeg.executor.impl.AbstractFfmpegExecutor.error() Ffmpeg is running but doesn't appear to be encoding:
May 3 15:44:17 host119 launch.sh[909]: 2018-05-03 15:44:17.641 SEVERE: [38] org.jitsi.jibri.capture.ffmpeg.executor.impl.AbstractFfmpegExecutor.error() Ffmpeg is running but doesn't appear to be encoding:
May 3 15:44:18 host119 launch.sh[909]: 2018-05-03 15:44:18.641 SEVERE: [38] org.jitsi.jibri.capture.ffmpeg.executor.impl.AbstractFfmpegExecutor.error() Ffmpeg is running but doesn't appear to be encoding: Duration: N/A, start: 1525351458.142652, bitrate: 1536 kb/s
May 3 15:44:19 host119 launch.sh[909]: 2018-05-03 15:44:19.644 SEVERE: [38] org.jitsi.jibri.capture.ffmpeg.executor.impl.AbstractFfmpegExecutor.error() Ffmpeg exited with code 1. Its most recent output was rtmp://a.rtmp.youtube.com/live2/jibri123: Unknown error occurred

There is no record button

Hi.

I have no record button in jitsi-meet i have only stream button.
How to make record button or auto start recording? also how make record without youtube stream.

How to make multi room recording? I knew that one jibri can record one room, but how to make recording servers pool and recording automatisation?

Where find documentation about how to do all this.

Thanks early for answers.

Recording unavailable jibri 1.3.49-1

Hi,

I setup jibri with jitsi on ubuntu 16.04. When press button 'Start recording' in UI show notification "Recording unavailable". I don't see any error in console log or any errors in

 /var/log/jitsi/jvb.log 
 /var/log/jitsi/jicofo.log
 /var/log/jitsi/jibri/log.*.txt 
 /var/log/prosody/prosody.err
 /var/log/prosody/prosody.log

Package version

Package: jibri
Status: install ok installed
Priority: optional
Section: net
Installed-Size: 40407
Maintainer: [email protected]
Architecture: all
Version: 1.3.49-1
Depends: default-jre-headless | java8-runtime-headless | java8-runtime, ffmpeg, curl, alsa-utils, icewm, xdotool, xserver-xorg-input-void, xserver-xorg-video-dummy
Conffiles:
 /etc/jitsi/jibri/asoundrc e4733108912bebab8d3ce0e1e9974919
 /etc/jitsi/jibri/config.json 2cb1cec7e5a91dc3d4e61687eb247198
 /etc/jitsi/jibri/icewm.preferences ae2b364f1c7768a397577ee9b7908279
 /etc/jitsi/jibri/logging.properties 7fee26395b5c28b008c2b4e2a9a77fed
 /etc/jitsi/jibri/xorg-video-dummy.conf 095543e2c3474de2064d9aeb2b6b1e0d
 /etc/systemd/system/jibri-icewm.service 721957db4bbc274ef8f2c812d3dcad86
 /etc/systemd/system/jibri-xorg.service 4c7e64ae79137f0d89c18714ca29b078
 /etc/systemd/system/jibri.service da7bbcc581aa1e14ec14b490e7cd32e2
Package: jitsi-meet
Status: install ok installed
Priority: optional
Section: net
Installed-Size: 11
Maintainer: Jitsi Team <[email protected]>
Architecture: all
Version: 1.0.2988-1
Depends: jitsi-videobridge (= 1055-1), jicofo (= 1.0-405-1), jitsi-meet-web (= 1.0.2740-1), jitsi-meet-web-config (= 1.0.2740-1), jitsi-meet-prosody (= 1.0.2740-1)
Package: prosody
Status: install ok installed
Priority: extra
Section: net
Installed-Size: 1226
Maintainer: Matthew James Wild <[email protected]>
Architecture: amd64
Multi-Arch: foreign
Version: 0.10.0-1~xenial4
Replaces: prosody, prosody-xmpp-server
Provides: prosody, prosody-xmpp-server, xmpp-server
Depends: lsb-base, lua5.1, lua5.1-expat, lua5.1-filesystem, lua5.1-socket, openssl, ssl-cert, libc6 (>= 2.14), libidn11 (>= 1.13), libssl1.0.0 (>= 1.0.0)
Pre-Depends: adduser
Recommends: lua-sec (>= 0.5), lua-bitop, ca-certificates
Suggests: lua-event, lua-dbi-mysql, lua-dbi-postgresql, lua-dbi-sqlite3, lua-zlib
Conflicts: prosody, prosody-xmpp-server
Conffiles:
 /etc/init.d/prosody 1b177ee4d46bbbf3dcc17b215f9f54eb
 /etc/logrotate.d/prosody 8ac1509c06cac587a53e5b24c9742bc9
 /etc/prosody/certs/Makefile 6d314b75e66b04520f31aec6f85dc69e
 /etc/prosody/certs/localhost.cnf 37af2ca0908d1ad5393bd71ff27abbdd
 /etc/prosody/certs/openssl.cnf d551929eea6e16914ab17c68459c9868
 /etc/prosody/prosody.cfg.lua bcd4deb8429858f50cbec3f00d41250a
 /etc/prosody/README 0449cb3bc6efd160f9621c1f2503572d obsolete
 /etc/prosody/migrator.cfg.lua 8578cf0a80d036b5505f59fd27054d47 obsolete
 /etc/prosody/conf.avail/example.com.cfg.lua e4d047b795e1e062844dd7f14e45b44f obsolete
 /etc/prosody/conf.avail/localhost.cfg.lua c5005c1f57bd8a44ae572320ace8227b obsolete

Enable recording in jitsi meet

    enableRecording: true,
    // Type for recording: one of jibri or jirecon.
    recordingType: 'jibri_file',
    hiddenDomain: 'recorder.au.meet.domain.com',

configs in zip file

/etc/jitsi/jibri/config.json -> jibri-config.json
/etc/jitsi/jicofo/config -> jicofo-config
/etc/jitsi/jicofo/sip-communicator.properties -> jicofo-sip-communicator.properties
/etc/jitsi/meet/au.meet.domain.com-config.js -> jitsi-meet-au.meet.domain.com-config.js
/etc/prosody/conf.d/au.meet.domain.com.cfg.lua -> prosody-au.meet.domain.com.cfg.lua

jibri-configs.zip

How I can debug problem ?

Thank you very much for help

where to use jibri?

Hi i am currently configuring a Jibri service but i tried on azure, google cloud platform and amazon ec2 and they don't have sound card on that instances, and I want to know which server utilice for Jibri service.

video resolution problem

when i am recording video in 1280X720 there in left side is big black vertical line and jitsi participants list is not shown.
As i think, in this moment resolution is incorrect.
When i restarting xmpp and xorg service, all becomes ok...

how to correct?

Jibri launch_recording.sh connect to youtube but not showing conference video

Hi All,

I have setup JIBRI same as given instructions Here, i tested using start-ffmpeg.sh working fine, it's created new filename.flv file but it consisting only connecting message, no video visible, same for launch_recording.sh also connected youtube live but same connecting message broadcast.

Appreciate your help.
Thanks.

start new streaming after stop old

after stop streaming i can not start new one without jibri-xmpp restart...
i getting message in jitsi that service is busy.
there is no errors in jibri side....

how to resolve?

also i have one big issue:
if i am in room only and have no camera and mic, and trying start streaming, it does not start, but after fail can't start new one without services restart.

How to receive more XMPP parameters

Hello everyone,
I had some disadvantages in making jibri work in a more dynamic way.

I want to help improve JIBRI

Currently jibri, does not receive the URL for the recording, nor does it receive the URL of the RTMP server.
This makes jibri quite limited, especially to make independent implementations.

My concern is: Is it possible to send more parameters when sending the message to Jibri?

I did tests sending different parameters, but jibri only those specified in this documentation:
Https://github.com/jitsi/jibri/blob/master/jibri-spec.xml

If this were possible, we could improve a lot of jibri to send transmissions to FacebookLive, to different RTMP servers, we could start FFMPG with multiple outputs:
Https://trac.ffmpeg.org/wiki/Creating%20multiple%20outputs

In short, many possibilities.

In order to make jibri more flexible.

Error running manual script for jibri

Error: Can't open display: (null)
Failed creating new xdo instance

I am trying to run ./scripts/launch_recording.sh <OUTPUT_FILENAME> [TOKEN] [YOUTUBE_STREAM_ID] script but getting this error when running the script. I have installed the dependencies from the list given, what could be the issue?

Jibri as docker image

Hello,
I am trying to build a docker image for Jibri so that it can be deployed on kubernetes.
So far I have created the Dockerfile.

FROM ubuntu:xenial
ENV DEBIAN_FRONTEND noninteractive
RUN rm -rf /var/lib/apt/lists/* \
    && apt-get update -y \
    && apt-get install ffmpeg -y \
    && apt-get install wget -y \
    && wget https://dl.google.com/linux/linux_signing_key.pub \
    && apt-key add linux_signing_key.pub \
    && echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/dl_google_com_linux_chrome_deb.list \
    && apt-get update -y \
    && apt-get install google-chrome-stable -y \
    && apt-get install -y alsa-utils ffmpeg icewm jq python-pip python3 python3-pip xdotool xserver-xorg-input-void xserver-xorg-video-dummy \
    && apt-get install -y unzip \
    && wget https://chromedriver.storage.googleapis.com/2.28/chromedriver_linux64.zip \
    && unzip chromedriver_linux64.zip \
    && cp chromedriver /usr/bin/chromedriver \
    && apt-get update -y \
    && apt-get install -y git \
    && useradd -m jibri \
    && usermod -a -G adm,video,audio,plugdev jibri
WORKDIR /home/jibri
RUN git clone https://github.com/bbaldino/jibri.git \
    && cp -a jibri/jibri-xmpp-client /home/jibri \
    && cp -a jibri/scripts /home/jibri \
    && cp jibri/asoundrc /home/jibri/.asoundrc \
    && mkdir /home/jibri/.icewm \
    && cp jibri/icewm.preferences /home/jibri/.icewm/preferences \
    && cp jibri/connecting.png /home/jibri/.icewm/connecting.png \
    && apt-get install -y systemd

COPY config.json /home/jibri/config.json

RUN pip3 install setuptools \
    && pip3 install -r jibri/requirements.txt
RUN mkdir -p /var/run/jibri \
    && chown jibri /var/run/jibri
RUN cd jibri-xmpp-client
CMD [ \
  "python3", "./app.py", \
 	"-j $JIBRI_JID", \
 	"-n $JIBRI_NICK", \
 	"-p $JIBRI_PASS", \
 	"-P $JIBRI_ROOMPASS", \
 	"-r $JIBRI_ROOM", \
 	"-t $JIBRI_TOKEN_SERVERS", \
 	"-c", "config.json" \
]

Then I created a env.list file which contains the variables required to run the CMD in the docker.

JIBRI_JID=focus@auth.<my.domain.com>/focus17493516600
JIBRI_ROOM=<room_name>
JIBRI_PASS=<password as specified in the config.json file>

Now when I start the docker container using the command:
docker run --env-file=./env.list <docker-image-name>
I get the following error:

future: <Future finished exception=InvalidJID('Domain contains illegal characters',)>
Traceback (most recent call last):
  File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run
    result = self.fn(*self.args, **self.kwargs)
  File "./jibri-xmpp-client/app.py", line 1166, in start_sleekxmpp
    signal_queue=signal_queue)
  File "/home/jibri/jibri-xmpp-client/jibrixmppclient.py", line 33, in __init__
    sleekxmpp.ClientXMPP.__init__(self, jid, password)
  File "/usr/local/lib/python3.5/dist-packages/sleekxmpp/clientxmpp.py", line 65, in __init__
    BaseXMPP.__init__(self, jid, 'jabber:client')
  File "/usr/local/lib/python3.5/dist-packages/sleekxmpp/basexmpp.py", line 70, in __init__
    self.requested_jid = JID(jid, cache_lock=True)
  File "/usr/local/lib/python3.5/dist-packages/sleekxmpp/jid.py", line 463, in __init__
    parsed_jid = _parse_jid(jid)
  File "/usr/local/lib/python3.5/dist-packages/sleekxmpp/jid.py", line 152, in _parse_jid
    domain = _validate_domain(domain)
  File "/usr/local/lib/python3.5/dist-packages/sleekxmpp/jid.py", line 233, in _validate_domain
    raise InvalidJID('Domain contains illegal characters')
sleekxmpp.jid.InvalidJID: Domain contains illegal characters

Need help.

Display name is required .

After updating jicofo ,jibri recording shows popup window "Display name required" .
On XMPP server jitsi meet config.js has following :
useNicks: false,
requireDisplayName: false,

Values are not used anymore and the 'nick' is not used from jibri config.

datamanager error Unable to write to accounts storage

prosodyctl register jibri auth.www.example.com jibripass

datamanager error Unable to write to accounts storage ('/var/lib/prosody/auth%2ewww%2eexample%2ecom/accounts/jibri.dat~: Permission denied') for user: jibri @auth.www.example.com

i just replaced original domain name to www.example.com to post the error log

Live streaming unavailable

I'm getting the following error, any suggestions which parameter is missing?

2018-04-30 12:26:01.049 INFO: [1] org.jitsi.jibri.Main.main() Using config file /etc/jitsi/jibri/config.json
2018-04-30 12:26:02.784 SEVERE: [1] org.jitsi.jibri.Main.error() A required config parameter was missing: Instantiation of [simple type, class org.jitsi.jibri.config.XmppEnvironmentConfig] value failed for JSON property name due to missing (therefore NULL) value for creator parameter name which is a non-nullable type

start streaming ?

Hi !

I was trying to adjust the jibri to stream to Facebook.

I have changed the following parameters at the launch_recording.sh

#!/bin/bash

URL=$1
STREAM=$2
TOKEN=$3
YOUTUBE_STREAM_ID=$4


export DISPLAY=:0

xdotool mousemove 1280 0

YOUTUBE_BASE="rtmp://rtmp-api.facebook.com/rtmp"

if [ ! -z "$5" ]; then
     YOUTUBE_BASE="rtmp://rtmp-api.facebook.com/rtmp"
fi

if [ ! -z "$4" ]; then
    STREAM="${YOUTUBE_BASE}/${YOUTUBE_STREAM_ID}"

    if [ ! -z "$5" ]; then
        STREAM="${STREAM}?backup=1"
    fi
fi

./start-ffmpeg.sh $STREAM

When I launch it via

./launch_recording.sh null null null FB_STREAM_KEY

It connects to FB and there is the connecting.png showing up so it works.

However, when I launch it via jitsi-meet it doesnt want to connect, I'm wondering is there any hard written youtube_rtmp URL written somewhere which I missed ?

Thanks a lot !

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.