Что такое Jibri и как его установить.


Что такое Джибри?

Jibri предоставляет услуги для записи или потоковой передачи видеоконференции Jitsi Meet.

Он работает путем запуска экземпляра Chrome, визуализированного в виртуальном кадровом буфере, а также захвата и кодирования вывода с помощью ffmpeg. Он предназначен для запуска на отдельном компьютере (или виртуальной машине), без каких-либо других приложений, использующих дисплей или аудиоустройства. Только одна запись за раз поддерживается на одном jibri.

Что случилось со старым Джибри?

Изначально Jibri был написан на комбинации python и bash, но мы столкнулись с некоторыми проблемами стабильности, поэтому он был переписан. Оригинальный код все еще можно найти в ветке здесь.
Различия между старым и новым Jibri

С точки зрения API, новый Jibri такой же, как и старый, в отношении обратной совместимости. API XMPP, который является основным способом взаимодействия с Jibri, точно такой же. Новый Jibri также добавляет HTTP API, хотя он не имеет 100% -ного паритета с API-интерфейсом XMPP и, с этой точки зрения, использовался в основном во время тестирования для более легкого запуска. Новый код Jibri содержит другой HTTP API для управления Jibri (например, завершение работы, корректное завершение работы, проверки работоспособности).

Новый Jibri имеет реорганизованный формат файла конфигурации. Образец конфигурации можно найти здесь. Ваша старая конфигурация Jibri не будет работать с новой Jibri без адаптации ее к новому формату.

Новый Jibri теперь имеет настраиваемое ведение журнала, которое можно настроить с помощью файла logging.properties.

Установка Jibri

Замечания по установке

    Jibri был построен на Ubuntu 16.04 (Xenial) и был протестирован с предварительно собранным ядром и дополнительными модулями ядра (пакет linux-image-extra-virtual). Любой другой дистрибутив или конфигурация ядра МОЖЕТ работать, но не был протестирован.

Предварительная подготовка

ALSA и Loopback Device

Сначала убедитесь, что модуль ALSA loopback доступен. Дополнительные модули (включая петлю ALSA) можно установить в Ubuntu 16.04 с использованием имени пакета linux-image-extra-virtual
Выполните следующие задачи от имени пользователя root:

 Настройте модуль для загрузки при загрузке: echo "snd-aloop" >> /etc/modules
Загрузите модуль в работающее ядро: modprobe snd-aloop
Убедитесь, что модуль уже загружен: lsmod | grep snd_aloop
Если выходные данные показывают загруженный модуль snd-aloop, то шаг настройки обратной петли ALSA завершен.

Ffmpeg с поддержкой захвата X11

    Jibri требует установки ffmpeg с поддержкой захвата X11. Это происходит по умолчанию в Ubuntu 16.04 при установке пакета ffmpeg.
    При сборке Jibri для Ubuntu 14.04 (trusty) репозиторий mc3man предоставляет пакеты. Они могут быть использованы в Ubuntu 14.04 следующим образом:

  • sudo add-apt-repository ppa:mc3man/trusty-media
  • sudo apt-get update
  • sudo apt-get install ffmpeg

Google Chrome stable и Chromedriver

Следует использовать последнюю стабильную сборку Google Chrome. Он может быть быть непосредственно установлен через apt, инструкции по его установке следующие:

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-get -y update
apt-get -y install google-chrome-stable

Добавьте файл управления политикой chrome и присвойте CommandLineFlagSecurityWarningsEnabled значение false. Это будет скрывать предупреждения в Chrome. Вы можете установить это так:

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

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
sudo mv -f ~/chromedriver /usr/local/bin/chromedriver
sudo chown root:root /usr/local/bin/chromedriver
sudo chmod 0755 /usr/local/bin/chromedriver

Разные необходимые инструменты

Смотрите в контрольном файле debian необходимые зависимости. Они могут быть установлены так:

sudo apt-get install default-jre-headless ffmpeg curl alsa-utils icewm xdotool xserver-xorg-input-void xserver-xorg-video-dummy

Репозитарий Jitsi Debian

Пакеты Jibri можно найти в стабильном репозитории на downloads.jitsi.org. Сначала установите ключ репозитория Jitsi в вашу систему:

wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -

Создайте в sources.list.d файл с репозитарием:

sudo sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"

Обновите список пакетов:

sudo apt-get update

Установите последнюю версию jibri:

sudo apt-get install jibri

Пользователь, группа

Jibri предназначен для работы в качестве обычного системного пользователя. В этом примере используются имя пользователя «jibri» и имя группы «jibri», но подойдет любой пользователь. Это не было проверено с пользователем root. Убедитесь, что пользователь jibri находится в правильных группах, чтобы получить полный доступ к аудио и видео устройствам. Добавим пользователя jibri в Ubuntu 16.04 в группы: «adm», «audio», «video», «plugdev».

sudo usermod -aG adm,audio,video,plugdev jibri

Конфигурационный файл

Отредактируйте файл config.json (по умолчанию установлен в /etc/jitsi/jibri/config.json).

Логирование

По умолчанию Jibri пишет логи в /var/log/jitsi/jibri. Если вы не устанавливаете с помощью debian-пакета, вам нужно убедиться, что этот каталог существует (или изменить местоположение, в которое Jibri пишет логи, отредактировав соответственный конфигурационный файл.

Конфигурирование Jitsi Meet для работы с Jibri

Jibri требует, чтобы некоторые настройки были включены в конфигурации Jitsi Meet. Эти изменения включают виртуальные хосты и учетные записи в Prosody, настройки для jitsi meet (в config.js), а также jicofo sip-communicator.properties.

Prosody

Создайте внутреннюю запись компонента MUC. Это необходимо для того, чтобы Jicofo мог обнаружить клиентов jibri в MUC, которые не доступны извне пользователям jitsi meet. Добавьте следующее в /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 = "null"
    muc_room_cache_size = 1000

Создайте запись виртуального хоста рекордера. Это используется для ограничения только аутентифицированных сеансов jibri chrome скрытыми участниками записываемой конференции. Добавьте следующее в /etc/prosody/prosody.cfg.lua:

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

Настройте две учетные записи, которые будет использовать Jibri.

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

Первая учетная запись — та, которую Jibri будет использовать для входа в MUC управления (куда Jibri будет отправлять своё состояние и ждать команд). Вторая учетная запись — это та, которую Jibri будет использовать в качестве клиента, когда присоединится к вызову, чтобы он мог обрабатываться специальным образом через веб-интерфейс Jitsi Meet.

Jicofo

Отредактируйте /etc/jitsi/jicofo/sip-communicator.properties, установите соответствующий MUC для поиска контроллеров Jibri. Это должен быть тот же MUC, на который есть ссылка в файле config.json jibri. Перезапустите Jicofo после установки этого свойства. Также предлагается установить PENDING_TIMEOUT на 90 секунд, чтобы дать Jibri некоторое время для запуска.

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

Jitsi Meet

Отредактируйте файл /etc/jitsi/meet/yourdomain-config.js, добавьте / установите следующие свойства:

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

Также убедитесь, что в конфигурации вашего интерфейса (по умолчанию /usr/share/jitsi-meet/interface_config.js) массив TOOLBAR_BUTTONS содержит значение recordings, если вы хотите показать кнопку записи файла и прямой трансляции.

После того как recordings включена в config.js, кнопка записи станет доступной в пользовательском интерфейсе. Однако до тех пор, пока Jicofo не «увидит» jibri, сообщение «Запись в данный момент недоступна» будет отображаться при нажатии.

Обязательно обновите config.json Jibri, чтобы он соответствовал конфигурации, сделанной выше.


Старт Jibri

После настройки config.json запустите службу jibri: sudo systemctl restart jibri