Документация Flussonic Media Server

Contents

Live — потоковое вещание

Flussonic Media Server умеет ретранслировать потоковое видео, перепаковывая его на лету в разные форматы. Это означает, что вы можете захватить MPEG-TS поток и раздавать его одновременно тысячам получателей, например, в DASH или HLS, и публиковать в RTMP на YouTube.

Flussonic Media Server поддерживает три типа потоков:

  • static — постоянно живущие (транслируемые).
  • ondemand — потоки, транслируемые по запросу.
  • live – публикуемые пользователем. См. Публикация

Содержание:

Статические потоки

Статические потоки запускаются при старте сервера и Flussonic Media Server постоянно следит за ними. Если источник пропадает (выключился транскодер, авария на антенне), то Flussonic Media Server будет пытаться переподключиться к источнику и ни при каких обстоятельствах не перестанет этого делать.

IPTV канал или IP камера обычно объявляются именно как статический поток.

Flussonic Media Server поддерживает различные типы источников, которые указываются в виде URL-адресов.

Пример конфигурации потоков из /etc/flussonic/flussonic.conf:

stream ort {
  url tshttp://10.0.4.5:9000/stream;
}
stream ipcam {
  url rtsp://192.168.0.100/channel/101;
}

В этой конфигурации:

  • ort и ipcam — это имена потоков, по которым можно обратиться к Flussonic Media Server и получить их.
  • tshttp://10.0.4.5:9000/stream и rtsp://192.168.0.1/channel/101 — URL источников.

Важно. Имя канала должно состоять из латинских букв, чисел, точки (.), символов минуса (-) и нижнего подчеркивания (_). Если в имени будет что-то кроме этих символов, то работоспособность DVR и вещания мы гарантировать не можем.

Чтобы добавить поток через веб-интерфейс:

Перейдите на вкладку Media.

Live — потоковое вещание

Нажмите add рядом со Streams.

потоковое вещание

Введите название потока и URL адрес источника. После этого нажмите create.

По умолчанию создается статический поток. Чтобы поменять тип потока на on demand, кликните по static рядом с названием потока.

Поток создан. Теперь можно перейти на страницу потока для проверки захвата:

потоковое вещание

Потоки по запросу (ondemand)

Если поток нужен не всё время, а только по требованию пользователя, можно указать Flussonic Media Server отключать его при неиспользовании и включать по запросу.

Для указания такого типа потока надо заменить stream на ondemand:

ondemand ipcam {
  url rtsp://192.168.0.1/channel/101;
}

Важно. Если между источником и репитером используется RTMP, RTSP или HTTP MPEG-TS, то снимать с репитера HDS или HLS не получится, потому что эти протоколы требуют наличия 10-30 секундного буфера видео в памяти. Плеер не начнет проигрывание пока этот буфер не накопится, и, следовательно, первый пришедший пользователь будет ждать это время. Единственный источник, который не подвержен этой проблеме – это другой Flussonic Media Server по протоколу HLS. Во Flussonic Media Server используются собственные расширения, позволяющие моментально стартовать видео на iPhone.

Можно регулировать время жизни потока после отключения клиента:

ondemand cam1 {
  url rtsp://192.168.0.1/channel/101;
  retry_limit 10;
  client_timeout 20;
}

В конфигурации выше указано следующее: пытаться переподключиться к сбойному источнику не больше 10 раз и после ухода последнего клиента гонять поток вхолостую не дольше 20 секунд.

Проигрывание потоков

Проигрывание описано подробно в отдельном разделе.

Мультибитрейтный поток

Для объединения двух независимых источников одного и того же контента для создания мультибитрейтного потока используется опция mbr=1.

Подробнее в разделе про объединение источников в один поток

JPEG-cкриншоты потока

Flussonic Media Server может делать JPEG-скриншоты потока. Для этого надо указать опцию thumbnails в настройках потока:

stream ort {
  url udp://239.255.0.100:1234;
  thumbnails;
}

А можно указать Flussonic Media Server, где забирать скриншоты. Это поможет не тратить ресурсы CPU. Многие IP-камеры имеют специальный URL со скриншотами:

stream cam0 {
  url rtsp://10.0.4.3:554/h264;
  thumbnails http://10.0.4.3/cgi-bin/snapshot.cgi
}

URL с потоком скриншотов можно найти в документации к вашей модели камеры.

Последний скриншот потока доступен по адресу http://flussonic:8080/ort/preview.jpg

MJPEG поток скриншотов доступен по адресу http://flussonic:8080/ort/preview.mjpeg

Читайте также:

Файл-заглушка для потока

Если поток недоступен, можно запустить на проигрывание файл.

stream rtr {
  url tshttp://10.0.4.5:9000/channel/5;
  backup vod/backup.mp4;
}

Необходимо указывать путь к файлу-заглушке относительно VOD-локации, например vod/backup.mp4, при этом нельзя указывать абсолютный путь.

Важно. Если оригинальный поток идет без звука (например, с IP камеры), то и файл-заглушка тоже должен быть без звука.

Подстановки

Иногда заранее неизвестны имена потоков на удаленном сервере, и хочется получать все эти потоки. В этом случае используется специальный тип потока (rewrite):

rewrite nsk/* {
  url rtsp://nsk-origin:554/%s;
}

rewrite ams/* {
  url hls://ams-origin:8080/%s/index.m3u8;
}

Если опция rewrite сочетается с использованием звездочки на конце имени потока, то префикс перед звездочкой отрезается от имени потока и результат подставляется в URL на место "%s".

Запись потоков (DVR)

Во Flussonic Media Server встроена система записи потоков в так называемый архив. Архиватор потоков умеет записывать видео, предоставлять доступ к произвольному фрагменту, экспортировать части архива в виде MP4 файлов, очищать старые файлы и поддерживать заполнение хранилища на приемлемом уровне.

Для включения архива достаточно указать опцию dvr в конфиге потока:

stream foxlive {
  url tshttp://trancoder-5:9000/;
  dvr /storage 90% 5d;
}

Подробнее в разделе про архив и методов работы с ним.

Сдвиг по часовой зоне (Timeshift)

Flussonic Media Server умеет воспроизводить записанный в архив поток с фиксированным отставанием.

Важно! Flussonic Media Server очень четко поддерживает фиксированное отставание. Если в архиве были "дырки", то пользователи не получат никакого видео за это время.

Для таймшифта есть отдельный протокол источника:

stream ort {
  url tshttp://trancoder-5:9000/;
  dvr /storage 90% 5d;
}

stream ort-4h {
  url timeshift://ort/14400;
}

Отставание указывается в секундах.

Выдача потока в UDP multicast

Flussonic Media Server умеет ретранслировать поток из источника в локальную сеть.

Flussonic Media Server пытается выдавать UDP максимально монотонно во времени, чтобы не создавать скачкообразной нагрузки на сеть.

stream ort {
  url tshttp://trancoder-5:9000/;
  udp 239.0.4.4:1234;
}

Настройки потоков для IP-камер видеонаблюдения

Можно указать Flussonic Media Server запрашивать поток с камеры только по UDP. Это бывает нужно с камерами, в которых проблемная реализация TCP.

stream cam1 {
  url rtsp://10.0.4.3:554/h264 rtp=udp;
}

Важно! Обратите внимание, что из десктопных браузеров показывать H265 сейчас фактически умеет только Microsoft Edge (версия 16 и выше) и Safari (версия 11 и выше). Из мобильных браузеров — Safari и Chrome для iOS (версия 11.0 и выше). Подробнее в статье Воспроизведение H265.

Если с камеры не надо забирать звук (например, он в G.726) то можно указать Flussonic Media Server забирать только одну дорожку. Ее номер необходимо указать в конфигурации:

stream cam1 {
  url rtsp://10.0.4.3:554/h264 tracks=1;
}

Для того, чтобы автоматически транскодировать аудио с камеры из G.711a или G.711u в AAC, укажите другой протокол:

stream cam1 {
  url rtsp2://10.0.4.3:554/h264;
}

Включение audio-only варианта HLS

Apple при валидации программ в AppStore может потребовать, чтобы поток был с audio only вариантом. Если добавить директиву в конфигурацию:

stream cam1 {
  url rtsp://10.0.4.3:554/h264;
  add_audio_only;
}

и при этом в потоке есть и видео, и аудио, то Flussonic Media Server будет генерировать мультибитрейтный вариантный плейлист из двух потоков: один обычный, второй только со звуком.

Захват потока с другого сервера Flussonic Media Server

Детально вопросы передачи видео между разными Flussonic Media Server описаны в разделе про кластеризацию видеопотоков в Flussonic.

DRM в live-потоках

Детально вопрос использования таких DRM как AES-128, SAMPLE-AES и Conax описан в разделе про DRM.

Обнаружение тишины в потоке

Flussonic умеет обнаруживать низкий уровень звука (отсутствие звука) на источнике входного потока и оповещать об этом. Подробнее в разделе

Обнаружение тишины