Permetent gravacions i streaming a Jitsi amb Jibri

Si en un post anterior vimos cómo podem montarnos la nostra pròpia solució de videoconferències per a la nostra empresa, avui li vam donar un parell d'afegits, com és la possibilitat de gravar les sessions o fer streaming en directe de les nostres reunions.

Mediante Jibri vam a poder permetre gravar en discoteca o en nube les sessions que hagamos, així com si se vol fer un directo y retransmitir por Youtube. Una consideración importante serà que solo podem fer una gravació de manera simultánea o streaming, para más, deberemos crear distintos Jibri's (per exemple en contenedores).

La idea es seguir el post anterior així que vamos a permitir está interesante funcionalidad! Partimos de que en Github se encuentra tot el projecte y perfectament documentado, aquí vamos con un Ubuntu 20.04.

Empezamos con lo fundamental, tenemos que tener la versión 8 de Java, conocerem la versió que tenemos executando:

java -versió

En el meu cas, al tener Ubuntu 20.04, veo que tengo la versión 11, així que hay que hacer downgrade, primer aseguramos instal·lar la versión 8:

sudo apt-get install openjdk-8-jre
sudo apt-get install openjdk-8-jdk

Y al ejecutar 'update-alternatives –config java’ podremos elegir la versió de java que usaremos, en el meu cas elegimos la 2:

hi ha 2 opcions per a l'alternativa java (proporcionant /usr/bin/java).

  Selection Path Priority Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode

Creamos la variable JAVA_HOME con 'nano ~/.bashrc', la añadimos al final del fichero, y tras grabar el fichero saldremos de sesión y volveremos a cargar para confirmar que la variable se carga (con un simple 'echo $JAVA_HOME').

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java

Instalamos las siguientes dependències que serán necesarias:

apt update
apt install unzip ffmpeg curl alsa-utils icewm xdotool xserver-xorg-input-void xserver-xorg-video-dummy -y

Cargamos el mòdul ALSA loopback, forçamos a que se cargue en el boot y verificamos que lo tenemos cargado:

echo "snd-aloop" >> /etc/modules
modprobe snd-aloop
lsmod | grep snd_aloop

Instalamos la última versión estable de Google Chrome:

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

Para ocultar el Warning que nos sacará Chrome que grabará la sesión: “Chrome is being controlled by automated test softwarelo indicaremos mediante una preferencia:

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

También necesitaremos Chromedriver:

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

Instalamos el repositorio de Jitsi para instalar Jibri finalmente:

wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"
apt update
apt install jibri -y

Metemos al usuario de Jibri en los grupos para tener acceso a los dispositivos de audio o video:

usermod -aG adm,àudio,video,plugdev jibri

Añadimos al final del fichero /etc/prosody/conf.avail/meet.dominio.eso.cfg.lua lo siguiente:

Component "internal.auth.meet.dominio.eso" "muc"
    modules_enabled = {
      "ping";
    }
    storage = "memory"
    muc_room_cache_size = 1000

VirtualHost "recorder.meet.dominio.eso"
    modules_enabled = {
      "ping";
    }
    authentication = "internal_plain"

Y recargamos Prosody:

prosody reload

Creamos las dos cuentas que utilizará Prosody y les establecemos una contraseña que usaremos en un ratito:

prosodyctl register jibri auth.meet.dominio.eso CONTRASEÑA
prosodyctl register recorder.meet.dominio.eso CONTRASEÑA

Añadimos estas 2 linas al final de ‘/etc/jitsi/jicofo/sip-communicator.propertiespara localizar los controladores Jibri:

org.jitsi.jicofo.jibri.BREWERY=Ji**********@************************io.eso
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90

Y recargamos Jicofo:

/etc/init.d/jicofo reload

Descomentamos y dejar así las siguientes líneas en ‘/etc/jitsi/meet/meet.dominio.eso-config.jspara habilitar las grabaciones o streaming:

fileRecordingsEnabled: true,
liveStreamingEnabled: true,
hiddenDomain: 'recorder.meet.dominio.eso',

Creamos el fichero de configuración de Jibri ‘/etc/jitsi/jibri/config.json’:

{
    "recording_directory":"/srv/recordings",
    "finalize_recording_script_path": "/path/to/finalize_recording.sh",
    "xmpp_environments": [
        {
            "name": "prod environment",
            "xmpp_server_hosts": [
                "meet.dominio.eso"
            ],
            "xmpp_domain": "meet.dominio.eso",
            "control_login": {
                // The domain to use for logging in
                "domain": "auth.meet.dominio.eso",
                // The credentials for logging in
                "username": "jibri",
                "password": "CONTRASENYA"
            },
            "control_muc": {
                "domain": "internal.auth.meet.dominio.eso",
                "room_name": "JibriBrewery",
                "nickname": "jibri-nickname"
            },
            "call_login": {
                "domain": "recorder.meet.dominio.eso",
                "username": "recorder",
                "password": "CONTRASENYA"
            },
            "room_jid_domain_string_to_strip_from_start": "conference.",
            "usage_timeout": "0"
        }
    ]
}

Creem el directori on deixarem les gravacions i ens donem permisos, també podríem guardar-les al núvol o en un compartit que muntéssim a la màquina:

mkdir /srv/recordings
chown jibri:jitsi /srv/recordings

Reiniciem Jitsi:

service jibri restart

I llest! Podem provar de fer una reunió i fer una transmissió en directe o fer una gravació de la reunió.

En iniciar la gravació tots els participants escoltaran un missatge que s'està gravant la sessió i també es podrà comprovar perquè veurem un icona a la part superior dreta.

I podrem confirmar que les gravacions es deixen en el directori que hem indicat, en aquest exemple a ‘/srv/recordings/’.

Espero que como siempre, que os haya resultado de interés y agradecer a todos los que dais esos likes y recomendaciones en redes sociales.

Posts recomanats

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dubtis a contactar amb mi, us intentareu ajudar sempre que pugui, compartir és viure ;) . Gaudir dels documents!!!