使用 Jibri 启用 Jitsi 录制和流式传输
如果在某个时候 上一篇 我们看到如何为我们的公司搭建自己的视频会议解决方案, 今天我们将增加一些功能, 比如录制会议或进行会议的直播.
通过Jibri,我们将能够允许将会议录制到本地或云端, 以及如果想要直播并在YouTube上播出. 一个重要的考虑是我们一次只能进行一次录制或直播, 如果需要更多, 我们需要创建不同的Jibri实例 (例如在容器中).
我们的想法是延续上一篇文章,所以我们将启用这个有趣的功能! 我们假设 在Github上 se encuentra todo el proyecto y perfectamente documentado, aquí vamos con un Ubuntu 20.04.
Empezamos con lo fundamental, tenemos que tener la versión 8 de Java, conoceremos la versión que tenemos ejecutando:
java -version
就我而言, al tener Ubuntu 20.04, veo que tengo la versión 11, así que hay que hacer downgrade, primero aseguramos instalar 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ón de java que usaremos, en mi caso elegimos la 2:
There are 2 choices for the alternative java (providing /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 dependencias 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ódulo ALSA loopback, forzamos a que se cargue en el boot y verificamos que lo tenemos cargado:
回波 "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 "黛博 [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 software” lo indicaremos mediante una preferencia:
mkdir -p /etc/opt/chrome/policies/managed echo '{ "CommandLineFlagSecurityWarningsEnabled": 假 }' >>/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.zipmv -f ~/chromedriver /usr/local/bin/chromedriverchown root:root /usr/local/bin/chromedriverchmod 0755 /usr/local/bin/chromedriver
我们安装 Jitsi 仓库以最终安装 Jibri:
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key 添加 - sh -c "echo 'deb HTTPS://download.jitsi.org 稳定/' > /etc/apt/sources.list.d/jitsi-stable.list" apt updateapt install jibri -y
将 Jibri 用户添加到组中以访问音频或视频设备:
usermod -aG adm,音频,视频,plugdev jibri
在 /etc/prosody/conf.avail/meet.dominio.eso.cfg.lua 文件末尾添加以下内容:
组件 "internal.auth.meet.dominio.eso" "muc"
modules_enabled = {
"乒";
}
storage = "记忆"
muc_room_cache_size = 1000
虚拟主机 "recorder.meet.dominio.eso"
modules_enabled = {
"乒";
}
authentication = "internal_plain"
然后重新加载 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 密码 prosodyctl register recorder recorder.meet.dominio.eso 密码
将这些 2 行添加到‘/etc/jitsi/jicofo/sip-communicator.properties’的末尾’ 以定位 Jibri 控制器:
org.jitsi.jicofo.jibri.BREWERY=Ji**********@************************io.eso
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90
然后重新加载 Jicofo:
/etc/init.d/jicofo reload
取消注释并保持如下行在‘/etc/jitsi/meet/meet.dominio.eso-config.js’中’ 以启用录制或流媒体:
fileRecordingsEnabled: 真, liveStreamingEnabled: 真, hiddenDomain: 'recorder.meet.dominio.eso',
创建 Jibri 配置文件‘/etc/jitsi/jibri/config.json’:
{
"recording_directory":"/srv/recordings",
"finalize_recording_script_path": "/path/to/finalize_recording.sh",
"xmpp_environments": [
{
"名字": "prod environment",
"xmpp_server_hosts": [
"meet.dominio.eso"
],
"xmpp_domain": "meet.dominio.eso",
"control_login": {
// 用于登录的域名
"域": "auth.meet.dominio.eso",
// 登录凭据
"用户名": "jibri",
"密码": "密码"
},
"control_muc": {
"域": "internal.auth.meet.dominio.eso",
"room_name": "JibriBrewery",
"昵称": "jibri-昵称"
},
"call_login": {
"域": "recorder.meet.dominio.eso",
"用户名": "录音机",
"密码": "密码"
},
"从开头去掉的 room_jid_domain 字符串": "conference.",
"使用超时": "0"
}
]
}
我们创建了一个目录来存放录制文件并赋予权限, 也可以将它们保存到云端或挂载在机器上的共享目录:
mkdir /srv/recordings chown jibri:jitsi /srv/recordings
重启 Jitsi:
service jibri restart
就是这样! 我们可以尝试召开会议并进行直播或录制会议.
开始录制时,所有参与者都会听到录制正在进行的提示,也可以通过右上角的图标进行确认.
Y podremos confirmar que las grabaciones las va dejando en el directorio que hemos indicado, en este ejemplo en ‘/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.











































