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

Если вы хотите воспроизвести ваш мультиязычный поток на 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.