Как настроить автоматическую запись конференций в Jitsi с помощью Jibri
Рассказываю и даю пошаговую инструкцию, как поднять сервер с Jibri, чтобы транслировать видео и вести запись конференций.
4К открытий5К показов
Привет! Меня зовут Роман. Я back-end разработчик в digital-агентстве MACHAON. Мы занимаемся разработкой и развитием цифровых решений для b2b и EdTech.
В прошлой статье я рассказывал, как мы реализовали на нашем проекте «онлайн-школа Programica» видеотрансляции с помощью open-source решения Jitsi Meet.
Сегодня расскажу и дам пошаговую инструкцию, как поднять сервер с Jibri, чтобы транслировать и вести запись видеоконференций.
Что такое Jibri
Jibri предоставляет услуги для записи или потоковой передачи конференции Jitsi Meet. Он работает, запуская экземпляр Chrome, отображаемый в виртуальном буфере кадра, и захватывая и кодируя вывод с помощью ffmpeg. Он предназначен для запуска на отдельной машине (или виртуальной машине), при этом никакие другие приложения не используют дисплей или аудиоустройства. На одном экземпляре jibri поддерживается запись только одной видеоконференции за раз.
Простыми словами, Jibri — это способ записи конференции Jitsi. Ниже рассказывается, как можно установить и использовать Jibri на одном или нескольких выделенных серверах либо с использование docker-контейнеров.
Предварительная настройка Jitsi
Перед тем как переходить к настройке, убедитесь, что Jitsi установлен и работоспособен.
nПри настройке будет использована константа `your-domain` — это доменное имя Jitsi или его ip-адрес. Везде где она встречается требуется заменить.n
Настройки prosody
Настроим prosody для работы с Jibri.
В конфигурации prosody `/etc/prosody/conf.avail/.cfg.lua`
проверьте наличие компонента или добавьте его
nЕсли данный компонент уже прописан, обязательно проверьте наличие параметра `muc_room_cache_size` В противном случае это не заработает.n
А также создадим еще один виртуальный хост:
Настройте две учетные записи, которые будет использовать Jibri:
jibri — для коммуникации с Jibri, отправки ему команд и получения его статуса;
recorder — для непосредственно подключения к конференциям и записи видео.
nКонстанты `JIBRI_AUTH_PASSWORD` и `JIBRI_RECORDER_PASSWORD` будут использованы далее. Их нужно выбрать на свое усмотрение — это пароли для служебных пользователей `jibri` и `recorder` соответственно. Рекомендуется выбирать разные пароли для каждого из этих пользователей. Рекомендуемая длина — 12 символов, включая строчные и заглавные буквы латинского алфавита, цифры и специальные символы.n
Настройка prosody закончена, перезапускаем службу для изменения настроек.
sudo systemctl restart prosody
Настройки jicofo
Отредактируйте `/etc/jitsi/jicofo/jicofo.conf`
, установите соответствующий MUC для поиска контроллеров Jibri. Это должен быть тот же MUC, что и в файле config.json jibri. Перезапустите Jicofo после установки этого свойства. Также предлагается установить время ожидания ожидания на 90 секунд, чтобы дать Jibri некоторое время для запуска, прежде чем попытка записи будет интерпретирована как сбой.
Настройка конференции
Отредактируйте файл `/etc/jitsi/meet/-config.js`
, добавьте/установите следующие свойства:
Также убедитесь, что в конфигурации вашего интерфейса (`/usr/share/jitsi-meet/interface_config.js`
по умолчанию) массив `TOOLBAR_BUTTONS` содержит значение записи, если нужно показать кнопку записи файла, и значение прямой трансляции, если нужно показать кнопку прямого эфира. Как только запись будет включена в `-config.js`
, кнопка записи станет доступна в пользовательском интерфейсе. Однако до тех пор, пока Jicofo не увидит действительный jibri, при нажатии будет отображаться сообщение «Запись в настоящее время недоступна». После успешного подключения jibri пользователю вместо этого будет предложено ввести ключ потока. Примечание. Обязательно обновите `config.json`
Jibri соответствующим образом, чтобы он соответствовал любой конфигурации, выполненной выше.
Установка Jibri с использованием нескольких серверов
Этот способ взаимодействия с Jibri наиболее простой и имеет свои плюсы и минусы. Плюс в простоте настройки, более гибкой настройке каждого экземпляра jibri. Если требуется записывать только одну конференцию в один момент времени, то рекомендуется этот способ. Минусы в масштабируемости, так как под каждый экземпляр требуется заводить новый сервер. И если требуется записывать несколько конференций одновременно, то следует воспользоваться следующим способом.
Модуль ALSA
Сначала убедитесь, что модуль обратной связи ALSA доступен. Дополнительные модули (включая loopback ALSA) можно установить в Ubuntu, используя имя пакета linux-image-extra-virtual.
Стабильная версия Google Chrome и драйвер Chrome
Следует использовать последнюю стабильную сборку Google Chrome. Его можно установить напрямую через apt, но ручные инструкции по его установке следующие:
Добавьте файл управляемых политик Chrome и задайте для CommandLineFlagSecurityWarningsEnabled значение false. Это скроет предупреждения в Chrome. Вы можете установить его так:
Chromedriver также требуется и может быть установлен следующим образом:
Дополнительные необходимые пакеты
Необходимые зависимости см. в управляющем файле debian. Их можно установить с помощью следующей команды:
Установка Jibri
Пакеты Jibri можно найти в стабильном репозитории на сайте downloads.jitsi.org. Сначала установите ключ репозитория Jitsi в свою систему:
Создайте файл `sources.list.d`
с репозиторием:
Установите последнюю версию jibri:
User, group
Убедитесь, что пользователь jibri находится в правильных группах, чтобы получить полный доступ к аудио- и видеоустройствам. Пример: «adm», «audio», «video», «plugdev».
Config files
Отредактируйте файл `jibri.conf`
(установленный по умолчанию в `/etc/jitsi/jibri/jibri.conf`
) соответствующим образом. Вы можете посмотреть в reference.conf значения по умолчанию и пример того, как настроить `jibri.conf`
. Переопределите только те значения, которые требуется изменить.
n`JIBRI_RECORDER_NICKNAME` можно выбрать на свое усмотрение. Это имя будет использоваться при присоединении Jibri к конференции.n
Чтобы задать собственную папку для сохранения записей, ее требуется создать и дать права на доступ к папке.
Чтобы добавить скрипт, который будет выполняться после того, как запись будет сформирована, также требуется создать данный скрипт и установить нужные права.
Логирование
По умолчанию Jibri регистрируется в `/var/log/jitsi/jibri`
. Если вы не устанавливаете через пакет debian, вам нужно убедиться, что этот каталог существует (или изменить местоположение, в которое Jibri ведет журналы, отредактировав конфигурацию журнала).
Установка jibri с использованием docker-контейнеров
Чтобы решить проблему с масштабируемостью, мы воспользуемся docker и обернем каждый экземпляр ijbri в отдельный контейнер. Таким образом мы сможем динамически добавлять и убирать экземпляры, если того требует сервис, который использует запись видеоконференций.
Требования
У вас должен быть установлен и запущен работоспособный docker.
Модуль ALSA
Сначала убедитесь, что модуль обратной связи ALSA доступен. Дополнительные модули (включая loopback ALSA) можно установить в Ubuntu, используя имя пакета linux-image-extra-virtual.
Так же добавим устройства ALSA-loopback. Количество этих устройств должно быть не меньше количества экземпляров Jibri, которые планируется использовать. В данном случае их будет создано 5 штук.
Настройка docker
Создадим файл конфигурации
со следующим содержимым:
Тут же создадим файл с переменными окружения.
со следующим содержимым:
Пробуем запустить контейнер.
nЕсли ufw активен, то может возникнуть ошибка. Для этого требуется открыть порт 5222 ufw allow 5222n
Если все хорошо, останавливаем контейнер и переходим к тому, что будет запущено 5 контейнеров, для одновременной записи 5 конференций. Если нужно больше 5, то нужно не забыть кроме увеличения количества контейнеров, увеличить количество ALSA-loopback устройств на сервере Jibri.
Запустим несколько контейнеров.
После этой команды будет запущено 5 контейнеров, но при этом на Jitsi будет доступна запись только одной конференции одновременно. Это происходит из-за того, что для каждого экземпляра Jibri нужно указать своё ALSA-loopback устройство.
Чтобы это сделать выполним команды:
и перезапустим контейнеры
Чтобы облегчить работу с контейнерами, можно вынести команды настройки устройств ALSA-loopback и перезапуска в отдельный файл, так как они могут быть полезными.
Благодарю за внимание! Надеюсь, был полезен. Если есть вопросы, пишите в комментариях, обсудим.
4К открытий5К показов