Skip to main content

7. Jibri

Jibri (Jitsi BRoadcasting Infrastructure) — это компонент Jitsi, который обеспечивает запись конференций и потоковую передачу в реальном времени (например, на YouTube или другие платформы). Он играет ключевую роль в расширении возможностей Jitsi Meet, позволяя пользователям записывать свои встречи или транслировать их для широкой аудитории. Давайте подробно разберем, как он работает и какие особенности у него есть.

Основные функции Jibri

  1. Запись конференций: Jibri может записывать видеоконференции Jitsi Meet. Когда пользователь инициирует запись, Jibri захватывает аудио и видео поток из Jitsi Meet и сохраняет его в виде файла (обычно в формате MP4). Эти записи затем могут быть сохранены на сервере для последующего просмотра или скачивания.

  2. Потоковая передача: Помимо записи, Jibri поддерживает потоковую передачу в реальном времени. Это позволяет транслировать конференцию на такие платформы, как YouTube, Twitch и другие, используя RTMP-протокол. Это полезно для проведения вебинаров или публичных трансляций.

  3. Работа через WebRTC: Jibri взаимодействует с Jitsi Meet через WebRTC, подобно тому, как это делают обычные участники конференции. Он подключается к конференции как "виртуальный участник", получая все медиапотоки (аудио, видео, экранное изображение), и затем записывает или транслирует их.

Компоненты и архитектура Jibri

Jibri состоит из нескольких ключевых элементов:

  1. Xorg и виртуальный дисплей: Для записи видео Jibri использует Xorg (X Server) и виртуальный дисплей. Это позволяет ему "видеть" видеопотоки конференции так же, как если бы это был обычный пользователь, сидящий за экраном. Виртуальный дисплей создается для захвата изображения с экрана, которое затем записывается или передается.

  2. FFmpeg: Jibri использует FFmpeg для записи и кодирования видео и аудио потоков. FFmpeg является мощным инструментом для обработки мультимедиа, что позволяет Jibri записывать видео с минимальной нагрузкой на систему, а также кодировать его в подходящие форматы (например, MP4 для записи или RTMP для стриминга).

  3. Google Chrome: Jibri использует браузер Google Chrome для подключения к конференции Jitsi Meet через WebRTC. Jibri фактически подключается к комнате как обычный участник, запрашивая аудио и видео, которые затем записываются или транслируются.

  4. PulseAudio: Для захвата аудиопотоков используется PulseAudio — программная система для работы с аудио в Linux. Она позволяет Jibri записывать звук с конференции и передавать его в FFmpeg для дальнейшей обработки.

Процесс работы Jibri

  1. Запуск записи: Когда пользователь инициирует запись, Jitsi Meet отправляет сигнал Jibri через Jicofo, который управляет началом записи. Jibri подключается к конференции как обычный пользователь, но скрыт от других участников. Он начинает захват аудио и видео через виртуальный дисплей и записывает его с помощью FFmpeg.

  2. Потоковая передача: Если выбрана опция трансляции, Jibri начинает передавать видеопоток на внешний сервер, например, на YouTube, используя RTMP-протокол. Все действия на конференции (видео участников, экраны, аудио) передаются в реальном времени.

  3. Остановка записи/трансляции: Когда запись или трансляция завершены, Jibri отключается от конференции, завершает запись и сохраняет файл (в случае записи). Если велась трансляция, она просто останавливается на платформе стриминга.

Взаимодействие с другими компонентами Jitsi

  • Jicofo: Jibri не может самостоятельно начинать или завершать запись — для этого нужен Jicofo. Jicofo отправляет сигналы Jibri о начале записи или трансляции, а также отслеживает его состояние. Когда пользователь инициирует запись через интерфейс Jitsi Meet, запрос сначала отправляется в Jicofo, который затем передает команду Jibri.

  • Prosody: Prosody, XMPP-сервер, используется для управления сообщениями и состояниями сессий. Jibri через Jicofo также использует XMPP для подключения к конференции и получения необходимых команд.

Требования к Jibri

  1. Мощность сервера: Запись и потоковая передача требуют значительных ресурсов. Чтобы Jibri работал стабильно, сервер должен иметь достаточно процессорной мощности и памяти. Например, для потоковой передачи в реальном времени рекомендуется сервер с 8 ядрами CPU и 8 ГБ ОЗУ.

  2. Отдельные инстансы Jibri: Поскольку каждый экземпляр Jibri может обрабатывать только одну конференцию одновременно, для работы с несколькими конференциями параллельно нужно развернуть несколько инстансов Jibri.

  3. Установка и конфигурация: Jibri должен быть правильно настроен на сервере, включая Xorg, PulseAudio, Google Chrome и FFmpeg. Конфигурация может потребовать тонкой настройки в зависимости от потребностей организации (например, настройки качества записи или трансляции).

Масштабируемость и отказоустойчивость

  • Горизонтальное масштабирование: Как уже было сказано, Jibri может обрабатывать только одну конференцию одновременно, поэтому для работы с несколькими конференциями нужно развернуть несколько инстансов Jibri. Обычно это делается на разных серверах или в контейнерах для распределения нагрузки.

  • Отказоустойчивость: Если один экземпляр Jibri выходит из строя или перегружается, Jicofo автоматически переключает запись или трансляцию на другой доступный инстанс Jibri (при наличии). Это помогает обеспечивать стабильность системы при больших нагрузках.

Заключение

й компонент Jitsi Meet, который расширяет возможности системы за счет записи конференций и потоковой передачи. Он работает через WebRTC, захватывая видеопотоки конференции, и использует такие инструменты, как FFmpeg и PulseAudio для обработки медиа. Несмотря на высокие требования к ресурсам, Jibri обеспечивает гибкость и масштабируемость для организаций, которым нужны функции записи и трансляции в реальном времени.

============================================================

Кто может запустить запись и трансляцию?

Запуск записи или трансляции с помощью Jibri в Jitsi Meet возможен только для модераторов. Обычные участники конференции не имеют прав для управления этими функциями. Это сделано для того, чтобы контролировать процесс записи и трансляции, а также избежать случайных или нежелательных действий.

Модераторы могут начать или остановить запись и трансляцию через интерфейс Jitsi Meet, где доступна соответствующая кнопка. Модератором обычно является тот, кто создал конференцию, но права модератора могут быть переданы и другим участникам.

Конфигурация этих настроек может быть изменена, если вы хотите, чтобы запись или трансляция была доступна и для других участников, но по умолчанию — только модераторы имеют такие привилегии.

 

Если в конференции несколько модераторов, то конфликта между ними при запуске записи или трансляции с помощью Jibri не будет. Jitsi Meet управляет процессом таким образом, что все модераторы могут контролировать запись и трансляцию, но права одного модератора не блокируют действия другого.

Однако могут возникнуть ситуации, когда один модератор запускает запись, а другой модератор решает её остановить или перезапустить. В таких случаях последний из модераторов, кто предпримет действие, "перебьет" решение предыдущего. Это значит, что модератор может остановить запись, запущенную другим модератором, или начать новую трансляцию, если та была завершена.

Конфликта в плане системы или сбоев не возникает, так как права на управление записью равны у всех модераторов. Важна внутренняя координация между модераторами, чтобы избежать неудобств для участников конференции.

===========================================================

Каких настроек требует Jibri для Jitsi, установленного в Docker?

Для настройки Jibri в среде Jitsi, установленного через Docker, потребуется выполнить несколько важных шагов, связанных с конфигурацией как самого Jibri, так и Jitsi. Вот основные настройки, которые должны быть сделаны:

1. Настройка Docker Compose для Jibri

  • Jibri должен быть развернут как отдельный контейнер, который взаимодействует с контейнерами Jitsi Meet, такими как web, prosody, jicofo и jvb.

  • В Docker Compose файле вам нужно добавить контейнер Jibri. Пример конфигурации:

yaml
  jibri:
    image: jitsi/jibri
    restart: unless-stopped
    volumes:
      - /srv/jibri/recordings:/config/recordings
      - /srv/jibri/config:/config
    environment:
      XMPP_SERVER: xmpp.meet.jitsi
      XMPP_DOMAIN: meet.jitsi
      XMPP_AUTH_DOMAIN: auth.meet.jitsi
      XMPP_INTERNAL_MUC_DOMAIN: internal.auth.meet.jitsi
      XMPP_RECORDER_DOMAIN: recorder.meet.jitsi
      XMPP_BOSH_URL_BASE: http://xmpp.meet.jitsi:5280
      XMPP_AUTH_USER: jibri
      XMPP_AUTH_PASSWORD: your_jibri_password
      XMPP_RECORDER_USER: recorder
      XMPP_RECORDER_PASSWORD: your_recorder_password
      JIBRI_LOGS_DIR: /config/logs
      DISPLAY: :0
      TZ: Europe/Moscow

2. Настройка Prosody

  • Для Jibri потребуется настроить дополнительный виртуальный хост для пользователя записи (recorder). В prosody.cfg.lua добавьте:

lua
VirtualHost "recorder.meet.jitsi"
  modules_enabled = {
    "ping";
  }
  authentication = "internal_plain"
  • Создайте пользователей jibri и recorder в Prosody:

bash
prosodyctl register jibri auth.meet.jitsi your_jibri_password
prosodyctl register recorder recorder.meet.jitsi your_recorder_password

3. Настройка Jicofo

  • В конфигурационном файле Jicofo (обычно это sip-communicator.properties или переменные среды) необходимо указать данные для аутентификации Jibri:

properties
org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.meet.jitsi
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90

4. Настройка Web интерфейса Jitsi

  • В файле конфигурации Jitsi Meet (config.js) следует включить возможность записи и потоковой трансляции:

javascript
fileRecordingsEnabled: true,
liveStreamingEnabled: true,

5. Дополнительные настройки

  • Права доступа: Убедитесь, что Jibri запускается от имени пользователя с нужными правами для записи видео и звука.

  • Звуковая карта: Jibri использует виртуальные звуковые устройства для записи. Docker-контейнер должен поддерживать это через ALSA или PulseAudio.

  • Порты: Jibri использует порты для соединения с Jitsi Meet. Убедитесь, что нужные порты открыты.

6. Логи и отладка

  • Логи Jibri можно просмотреть в контейнере, они хранятся в /config/logs или в логах Docker контейнера (docker logs jibri).

  • Это полезно для выявления ошибок, связанных с соединением с XMPP-сервером или кодированием видео.

Следуя этим шагам, вы сможете настроить Jibri для работы с Jitsi Meet, развернутым через Docker, и обеспечите возможность записи встреч и потоковой трансляции.

Если будут какие-то ошибки, логи Jibri и Jicofo — это основное место для поиска возможных проблем.

===========================================================

Настройки, требующиеся для корректной работы Jibri, краткий список

ChatGPT сказал:

Вот короткий список настроек, необходимых для корректной работы Jibri с Jitsi:

  1. Docker Compose:

    • Добавить контейнер Jibri в docker-compose.yml.

    • Указать переменные окружения для Jibri:

      • XMPP_SERVER

      • XMPP_DOMAIN

      • XMPP_AUTH_DOMAIN

      • XMPP_INTERNAL_MUC_DOMAIN

      • XMPP_RECORDER_DOMAIN

      • XMPP_BOSH_URL_BASE

      • XMPP_AUTH_USER

      • XMPP_AUTH_PASSWORD

      • XMPP_RECORDER_USER

      • XMPP_RECORDER_PASSWORD

      • JIBRI_LOGS_DIR

      • DISPLAY

      • TZ

  2. Prosody:

    • Добавить виртуальный хост для recorder.meet.jitsi в prosody.cfg.lua.

    • Создать пользователей jibri и recorder с помощью prosodyctl.

  3. Jicofo:

    • Указать настройки для Jibri в конфигурационном файле Jicofo:

      • JibriBrewery для Jibri.

      • PENDING_TIMEOUT.

  4. Конфигурация Jitsi Meet:

    • Включить записи и потоковую трансляцию в config.js:

      • fileRecordingsEnabled: true

      • liveStreamingEnabled: true

  5. Порты и сетевые настройки:

    • Убедиться, что нужные порты открыты для соединения между компонентами.

  6. Логи и отладка:

    • Проверять логи Jibri в /config/logs и с помощью docker logs jibri для диагностики.

Эти настройки помогут обеспечить правильную работу Jibri с Jitsi.