Трансляции через Mux

Mux Livestream добавляет в приложение прямые трансляции: видео с камеры уходит в API Mux и раздаётся зрителям в реальном времени. Как это устроено под капотом — в статье о работе live streaming.

совет
Где применяется
  • Мероприятия — конференции, воркшопы, встречи.
  • Обучение — занятия, вебинары, разборы.
  • Соцсети — эфиры пользователей.
  • Поддержка — разбор проблемы в прямом эфире.

Подключение Mux

Откройте Settings and Integrations > Integrations > Mux Livestream и включите Mux Broadcast.

Дальше заведите аккаунт Mux и перейдите в Settings > API Access Tokens. Нажмите Generate new token, выберите окружение (Development или Production), отметьте Mux Video с правом Write, задайте имя и создайте токен. Скопируйте Access Token ID и Secret Key, вставьте их во FlutterFlow и нажмите Deploy.

Виджет MuxBroadcast

Перетащите виджет MuxBroadcast на страницу, где будет эфир, и настройте его свойства в панели справа.

Три главных свойства:

  • Show Streaming View — по умолчанию выключено, и виджет показывает только стартовый экран: превью камеры и кнопку «Start Stream». Включите, чтобы на холсте отображался интерфейс идущего эфира — удобно при настройке раскладки.
  • Broadcast Latency — задержка: Standard, Reduced или Low. Чем меньше задержка, тем живее общение со зрителями, но тем сильнее страдает качество на плохой сети.
  • Broadcast Audio ChannelStereo или Mono. Стерео звучит богаче, моно экономит трафик и совместимо с большим числом устройств.

Свойства виджета MuxBroadcast

Оформление виджета настраивается отдельно:

  • Start Button Style, Text, Icon — вид, подпись и иконка кнопки старта.
  • Stop Button — кнопка остановки.
  • Flip Camera Button — переключение между фронтальной и основной камерой.
  • Live Text Style — надпись «LIVE».
  • Live Container & Icon — плашка и иконка эфира.
  • Duration Text Style — счётчик времени.
  • Duration Container — плашка со счётчиком.

Старт и остановка эфира

У виджета есть два триггера — On Broadcast Start и On Broadcast Stop. К ним и привязывают логику начала и конца трансляции.

Триггеры действий виджета MuxBroadcast

On Broadcast Start [Триггер]

Срабатывает, когда пользователь нажал Start Stream. Здесь доступен адрес эфира — Widget State → Mux Playback URL; обычно на этом шаге создают запись в базе о том, что трансляция началась.

Действия по триггеру On Broadcast Start

On Broadcast Stop [Триггер]

Срабатывает при остановке эфира. Тут обновляют базу: ставят is_live в false, сохраняют время окончания, уводят пользователя со страницы трансляции.

Действия по триггеру On Broadcast Stop

Просмотр трансляции

Пока эфир идёт, его смотрят по Mux Playback URL от виджета. С уже завершённым эфиром сложнее: там нужно достать адрес записи.

Идущий эфир

  1. Откройте страницу со списком трансляций.
  2. По нажатию на карточку эфира — скажем, в ListView — переходите на страницу ViewBroadcast и передавайте Mux Playback URL параметром страницы.
  3. На странице ViewBroadcast подставьте этот адрес в виджет VideoPlayer.

Прошедший эфир

Когда трансляция закончилась, её исходный Mux Playback URL перестаёт работать. Запись доступна по другому адресу — по playback ID записи, которую Mux создал автоматически во время эфира.

Порядок такой: по playback ID эфира получить его ID, затем из списка последних записей эфира взять ID записи и уже по нему — её playback ID.

совет

Понадобится выражение на Dart или собственная функция: из адреса вида https://stream.mux.com/iSHXmiVyFshIPgeZf2F78OrvOGnEQd02Api00ipWRwWaQ.m3u8 нужно вынуть playback ID — iSHXmiVyFshIPgeZf2F78OrvOGnEQd02Api00ipWRwWaQ — и потом собрать новый адрес в том же формате, подставив playback ID записи.

Получение идентификатора прошедшей трансляции

Три вызова API Mux подряд:

Дальше остаётся ветвление по состоянию эфира: идёт — берём текущий адрес напрямую, закончился — проходим цепочку вызовов и собираем адрес записи.

перевод официальной документации FlutterFlow

обновлено

ESC