Skip to content

Отправка потока на другие серверы

Копирование потока на другие серверы (push)

Flussonic Media Server может принудительно копировать поток на другие серверы при помощи директивы push. Например, можно копировать поток в CDN.

stream breakingnews {
  url publish://;
  push rtmp://localhost:1935/static/breakingnews1;
  push tshttp://localhost:80/breakingnews2/mpegts;
  push hls://cdn3/breakingnews3 disabled;
  push m4s://ANOTHER_FLUSSONIC:80/STREAMNAME;
}

Директива push поддерживает протоколы RTMP, HTTP MPEG-TS, HLS и M4S.

Для отправки потоков на другой сервер Flussonic воспользуйтесь нашим протоколом M4S. Это потоковый протокол, который не создает задержки и нужен для того, чтобы передать данные с Flussonic на Flussonic для дальнейшей передачи по WebRTC/RTMP.

Push с 302 редиректом

При публикации по m4s:// Flussonic поймет HTTP 302 и последует по указанному адресу. Это значит, что можно указать не только адрес Flussonic-сервера, но и ваш собственный бекенд для выбора точки публикации. Например, m4s://example.com/router;.

Управление отправкой потоков на другой сервер

Если у потока настроен push, а поток стал offline, то по умолчанию Flussonic будет бесконечно пытаться отправить недоступный поток. При большом количестве потоков это приведет к критическому возрастанию нагрузки на CPU.

Flussonic может следить за состоянием отправки потоков на другие серверы, и собирать статистику по попыткам отправки. Наглядное отображение статусов отправки в UI поможет вам принимать меры — приостанавливать offline-потоки или ограничивать попытки отправить их.

Статус отправки в виде индикатора показан на главной странице в списке Streams и в настройках потока на вкладке Output (Push live video to certain URLs). Причину остановки отправки потока можно посмотреть в логах.

Flussonic push options

Для того, чтобы управлять состоянием отправки потоков через push с целью снижения нагрузки на ваш сервер, есть опции:

  • retry_timeout (Timeout в UI) — как часто Flussonic должен повторять попытки отправить поток. Интервал в секундах, по умолчанию 5 секунд.

    Увеличенный интервал Timeout снизит нагрузку на сервер.

    push rtmp://example.com:1935/live/STREAM_NAME retry_timeout=10;

  • retry_limit (Limit в UI) — сколько всего раз подряд Flussonic может повторять попытки отправить поток, по умолчанию 100.

    Например, можно выставить Limit, ограничивающий число попыток отправки. После достижения этого лимита, у потока будет статус 'error'.

    push rtmp://example.com:1935/live/STREAM_NAME retry_timeout=10 retry_limit=5;

  • disabled (отключить Enable в UI) — отключить отправку потока.

    Временное отключение, или пауза, позволяет, не удаляя поток из конфигурации, остановить его отправку. Теперь URL и все настройки отключенного потока останутся на Flussonic.

    push rtmp://example.com:1935/live/STREAM_NAME retry_timeout=10 retry_limit=5 disabled;

  • timeout — Опция прекращает отправку потока спустя заданное колличество времени, если источник или публикация остановились.

    push rtmp://example.com:1935/live/STREAM_NAME timeout=10;

Копирование потока в CDN Akamai

stream breakingnews {
  url publish://;
  segment_count 10;
  segment_duration 10;
  push hls://post.[HOSTNAME].akamaihd.net/[STREAM ID]/[ANY STREAM NAME]/;
}