Skip to content

Воспроизведение HLS

Flussonic Media Server поддерживает раздачу видео по протоколу HLS. Многие из доступных возможностей нестандартны для HLS, но мы поддерживаем их для вашего удобства.

Поддерживаемые кодеки: H264, H265, MPEG2 video, AAC, MP3, MPEG2 audio, AC-3.

Flussonic Media Server позволяет получать по HLS прямой эфир, видео по запросу, видео из архива (catchup и timeshift).

Если входной поток содержал DVB субтитры или телетекст, то они будут переданы в выходной поток, проигрываемый по HLS, если настроить Flussonic для этого. Если поток пишется в архив, то и субтитры сохраняются в архиве.

Содержание:

Простое воспроизведение HLS

Если у вас есть простой live поток или файл (одно видео, один звук), то URL для воспроизведения через HLS очень простой:

http://FLUSSONIC-IP/STREAMNAME/index.m3u8

где FLUSSONIC-IP — это пример адреса + порта вашего Flussonic Media Server.

Flussonic Media Server также принимает playlist.m3u8 в конце URL для обратной совместимости с другими серверами.

Когда вы начинаете работать с мультиязычными или мультибитрейтными контентом, все становится сложнее.

Воспроизведение по HLS fMP4 для H.265

Фрагментированный MP4 (fMP4) дает важные преимущества. Прежде всего, это единственный способ воспроизвести видео в HEVC через HLS. Кроме того, контейнер MP4 поддерживается любым плеером, в отличие от с MPEG. Формат fMP4 также может использоваться DASH, так что только манифест будет отличаться от HLS, а кодирование MP4 будет выполняться один раз для обоих протоколов.

По следующему URL можно воспроизвести HLS c кодированием в MP4-фрагменты:


http://FLUSSONIC-IP/STREAMNAME/index.fmp4.m3u8

где FLUSSONIC-IP — это пример адреса + порта вашего Flussonic Media Server.

Воспроизведение по Low-Latency HLS

Flussonic поддерживает воспроизведение по Apple Low-Latency HLS (LL-HLS) — это потоковый протокол, который основан на HLS и преодолевает его высокую задержку.

LL-HLS поддерживает те же кодеки, что и HLS (H.264, AAC, MP3), а также HEVC (H.265). Контейнер может быть MPEG-TS или fMP4 (фрагментированный MP4). Flussonic использует fMP4 для упаковки потоков для доставки LL-HLS. Упаковка в fMP4 производится по стандарту CMAF.

Подготовка

Перед использованием HLS с низкой задержкой помните, что нагрузка на сеть и сервер будет увеличиваться, поскольку этот протокол делит сегменты HLS на ещё более мелкие сегменты (также называемые чанками (chunks)).

Кроме того, чтобы получить действительно низкую задержку, вы должны подготовить поток, закодировав его с небольшм GOP (группы изображений). Мы рекомендуем GOP размером 1 или 2 секунды. Транскодер Flussonic создает GOP постоянного размера, который вы можете указать на странице настроек транскодера. Если у видео FPS=25, то секундный GOP будет иметь размер 25 кадров, его и нужно указать в настройках транскодера.

GOP for LL-HLS

Настройка LL-HLS

Чтобы проигрывать поток по протоколу Apple Low-Latency HLS:

  1. Включите CMAF в настройках потока в файле etc/flussonic/flussonic.conf:

    stream example_stream { url fake://fake; cmaf on; }

    CMAF — стандарт, который используется для создания MP4-фрагментов совместимых со спецификацией на Low-Latency HLS.

    Примените новую конфигурацию, выполнив в командной строке:

service flussonic reload
  1. Откройте в плеере URL следующего вида:

    http://FLUSSONIC-IP/example_stream/index.ll.m3u8

    Полная поддержка LL-HLS есть в плеере THEOplayer.

Мультиязычный HLS

Если вы хотите воспроизвести ваш мультиязычный поток на iPhone, вам нужно использовать тот же http://192.168.2.3:80/STREAMNAME/index.m3u8

Но если вы хотите посмотреть мультиязычный поток используя VLC или приставку, нужно включать video.m3u8.

URL для плеера:

http://FLUSSONIC-IP/STREAMNAME/video.m3u8

Это связано с тем, что, согласно требованиям Apple HLS, для каждого отдельного языка нужно указывать отдельный плейлист с audio only вариантом. В MPEG-TS другой механизм: рядом с видео укладываются все аудиодорожки, и плеер сам выбирает, что будет проигрывать. Чтобы видео можно было посмотреть на iPhone, оно должно соответствовать требованиям Apple. Но VLC и приставки, в нарушение стандарта HLS, ожидают старый вариант MPEG-TS, преобразованный в HLS. Поэтому нужно включать video.m3u8.

Добавление «Audio only» для Apple

Apple требует, чтобы у всех ваших потоков был вариант без видео, только звук.

Они считают, что если пользователь смотрит видео по 3G и, оказавшись в зоне неуверенного приема, лучше у него будет только звук, чем буферизация.

Вы можете включить эту опцию в Flussonic Media Server следующим образом:

stream example {
  url file://vod/bunny.mp4;
  add_audio_only;
}

Note

Такая настройка может сделать ваш index.m3u8 адрес невоспроизводимым в VLC или на приставке. В этом случае используйте video.m3u8 (см. выше).

Отдельные битрейты для приставок

Когда у вас есть мультибитрейтный мультиязычный контент и вы хотите проиграть его на приставке, которая не поддерживает мультибитрейтный HLS плейлисты, вы можете запросить с Flussonic Media Server отдельные плейлисты с одним видео и всеми звуковыми дорожками, как с опцией mono:

http://FLUSSONIC-IP/STREAMNAME/video1.m3u8

Этот плейлист не мультибитрейтный (не вариантный), в нем URL до сегментов, в которых первая видео дорожка и все доступные звуковые дорожки.

Если вы хотите доставлять мультиязычные мультибитрейтные потоки на приставки, не понимающие стандарт Apple для мультиязычности, используйте video.m3u8:

http://flussonic-ip/STREAMNAME/video.m3u8

Это мультибитрейтный плейлист, который отдает список плейлистов с разными качествами: video1.m3u8, video2.m3u8 и т.д.

DVR catchup playback

Когда ваш поток уже записан на сервере нашим DVR, вы можете воспроизвести видео через HLS, используя время начала и конца передачи (например, из EPG).

URL будет:

http://FLUSSONIC-IP/STREAMNAME/archive-1362504585-3600.m3u8

Этот плейлист будет так называемый variant, если в потоке будет больше одной звуковой дорожки или больше одного битрейта. Он будет отдавать список сегментов начиная с UTC 1362504585 ( 2013, Март, 5, 17:29:45 GMT) и один час вперед.

URL mono даст список сегментов, содержащих все дорожки, в MPEG-TS:

http://FLUSSONIC-IP/STREAMNAME/mono-1362504585-3600.m3u8

Более конкретный videoN плейлист даст список сегментов с N видео дорожкой и всеми звуковыми дорожками:

http://FLUSSONIC-IP/STREAMNAME/video1-1362504585-3600.m3u8

и variant видео плейлист со списком videoN плейлистов:

http://FLUSSONIC-IP/STREAMNAME/video-1362504585-3600.m3u8

HLS Event playlist

Вы можете запросить HLS Event плейлист по ссылке:

http://FLUSSONIC-IP/STREAMNAME/index-1362504585-now.m3u8

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

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

Перемотка плейлиста

Есть специальный плейлист "rewind-N.m3u8" с большим «скользящим» окном, позволяющий перематывать и ставить на паузу HLS потоки на долгие часы.

http://FLUSSONIC-IP/STREAMNAME/rewind-7200.m3u8

7200 — длина HLS плейлиста в секундах. Это означает, что ваши клиенты могут поставить эфир на паузу на 2 часа или перемотать на начало футбольного матча без обращения по специальными архивным ссылкам.

DVR timeshift playback

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

Cписок URL для относительного таймшифта:

/timeshift_rel-3600.m3u8
/mono-timeshift_rel-3600.m3u8
/video-timeshift_rel-3600.m3u8
/video1-timeshift_rel-3600.m3u8

и для абсолютного таймшифта:

/timeshift_abs-1508403742.m3u8
/mono-timeshift_abs-1508403742.m3u8
/video-timeshift_abs-1508403742.m3u8
/video1-timeshift_abs-1508403742.m3u8

Воспроизведение отдельных дорожек

Если у потока есть несколько аудио- и видеодорожек, то можно указать, какие именно дорожки следует отдавать. Для этого укажите номера дорожек, добавив строку запроса с параметром filter.tracks к URL потока.

Примеры:

Выбрать первую аудио- и вторую видеодорожки:

http://FLUSSONIC-IP/STREAMNAME/index.m3u8?filter.tracks=v2a1

Выбрать только видео:

http://FLUSSONIC-IP/STREAMNAME/index.m3u8?filter.tracks=v1

Проигрывание отрывка длиной 3600 секунд из DVR архива, начиная со времени UTC 1362504585:

http://FLUSSONIC-IP/STREAMNAME/archive-1362504585-3600.m3u8?filter.tracks=v2a1

Устаревший синтаксис вида filter=tracks:v2a1 поддерживается, но рекомендуется синтаксис filter.tracks=v2a1.