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

Содержание

VOD — вещание файлов

Flussonic Media Server поддерживает воспроизведение видеофайлов в приложениях-клиентах. Для этого необходимо настроить виртуальный путь к файлу, называемый VOD-локация. Одна VOD-локация может содержать несколько каталогов и несколько VOD-локаций можно использовать для организации видеофайлов и применения различных наборов настроек к файлам в каждой локации.

Содержание:

Контейнеры и кодеки

Flussonic Media Server умеет раздавать видео из файлов в контейнерах MP4 с видео кодеками H.264, H.265 (HEVC), VP6 и аудио кодеками AAC, MP3, AC3, PCMA, PCMU.

Важно! Мы рекомендуем конвертировать файлы из MKV в MP4, потому что формат MP4 предпочтительнее для проигрывания файлов по HLS или DASH. Для конвертации из MKV в MP4 можно использовать ffmpeg.

Контейнер Видео Аудио
MP4 (.mp4, .f4v, .mov, .m4v, .mp4a, .3gp, .3g2)
H.264, H.265
MP3, AAC (все профили)

Как видно из списка, Flussonic не поддерживает формат MKV, и тому есть причины.

В файле формата MP4 в заголовке заранее есть все данные о дорожках и сегментах. Достаточно прочитать moov-структуру MP4-файла, чтобы Flussonic мог узнать всё обо всех кадрах (кроме их содержимого). А так как moov занимает менее 1% всех данных, то прочитать нужно только очень малую часть многогигабайтного файла. И этих данных достаточно, чтобы создать HLS или DASH плейлист.

Самое важное здесь, что в moov содержатся данные о битрейтах, поэтому в случае с MP4 плеер сразу получит валидный мастер-плейлист с данными о битрейтах дорожек, что позволит проиграть файл без ошибок. Если нет данных о битрейтах, плеер не сможет выбрать дорожку для проигрывания. Могут возникать и другие плохо устранимые ошибки.

В случае с MKV-файлами данные о структуре могут отсутствовать. Упаковщики MKV иногда прописывают NUMBER_OF_BYTES, но не всегда, и в этом случае пришлось бы при открытии читать весь файл для того, чтобы узнать его содержимое и сформировать плейлист.

Создание VOD-локации

Чтобы вещать VOD (video-on-demand) файлы, настройте виртуальный путь к файлам, называемый VOD-локацией. В одной VOD-локации можно размещать несколько каталогов — а несколько разных VOD-локаций можно использовать, чтобы применить различные наборы настроек к файлам в каждой локации.

Например, чтобы транслировать файлы, из каталога /movies, необходимо придумать произвольное, неиспользуемое имя для префикса и вписать следующую строчку в конфигурационный файл /etc/flussonic/flussonic.conf:

file vod {
  path /movies;
}

Здесь vod — уникальное имя VOD-локации (префикса месторасположения файлов). К VOD-файлам в этой локации нужно будет обращаться по префиксу vod. Параметр path указывает каталог, в котором Flussonic будет искать файлы.

Настроить вещание файлов можно и через веб-интерфейс. Создайте VOD-локацию в списке на странице Media нажмите add возле заголовка Files (VOD):

веб-интерфейс

Укажите имя локации и путь к кталаогу либо URL и сохраните настройки.

VOD-локация

Теперь файлы будут отдаваться по префиксу vod по протоколам HLS, DASH, HDS, RTMP, RTSP.

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

Управление файлами через веб-интерфейс

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

После добавления файлового префикса в конфигурационном файле или через веб-интерфейс надо перейти во вкладку VOD:

Media Server

Создайте поддиректории:

веб-интерфейс

После того как вы выбрали нужную директорию, залейте в нее файлы:

Управление файлами

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

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

Как вставить плеер на сайт

В Flussonic Media Server есть специальная страница — embed.html, которая предназначена для вставки VOD видео на сайт или просмотра видео через браузер. Она доступна по ссылке:

http://HOSTNAME/vod/bunny.mp4/embed.html

Страница автоматически определяет браузер и выбирает поддерживаемый протокол. Для большинства устройств на сегодня — HLS.

Подробнее в статье «Вставка видео на сайт (embed.html»).

Как проиграть файл по разным протоколам

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

В примере, проиграем файл /movies/example/s01e02.mp4. Предварительно мы настроили VOD-локацию:

file vod {
  path /movies;
}

Для того чтобы проиграть файл, лежащий на диске по пути /movies/elementary/s01e02.mp4 надо указать следующие источники для плееров:

HLS (iOS, Android, STB)

http://HOSTNAME:8080/vod/elementary/s01e02.mp4/index.m3u8

HDS (StrobeMediaPlayback или другие OSMF-плееры)

http://HOSTNAME:8080/vod/elementary/s01e02.mp4/manifest.f4m

RTMP (Jwplayer, Flowplayer, Uppod)

application: rtmp://HOSTNAME/vod, path: elementary/s01e02.mp4

MSS

http://HOSTNAME:8080/vod/elementary/s01e02.mp4.isml/manifest

Как проиграть файл из админки

Видеофайлы можно воспроизводить не только из плеера или просто в браузере, но и из веб-интерфейса Flussonic. Обратите внимание, что веб-интерфейс может воспроизводить только файлы, находящиеся в VOD-локациях.

Необходимо выбрать файл в списке файлов конкретной локации VOD:

Как проиграть файл из админки

После можно дополнительно выбрать нужный протокол и нажать Click to play.

Мультикаталоговая раздача

Иногда при большом трафике стриминга принимается решение монтировать жесткие диски в системе не в RAID, а в режиме JBOD. То есть каждый жесткий диск виден в системе отдельно и монтируется в отдельный каталог.

Можно указать Flussonic Media Server одну файловую зону на несколько каталогов. Это даст возможность перемещать файл между устройствами без изменения URL-адреса:

file vod {
  path /mount/disk1;
  path /mount/disk2
}

Настройки VOD

Эти настройки можно указывать внутри директивы file, которая хранит настройки вещания файлов. Мы называем их опции.

file

file vod {
  path /storage;
}
Конфигурации локации для проигрывания файлов.

cache

cache /ssd misses=5 2d 40G; Все запросы к файлам будут кешироваться в папке /ssd сроком не более чем 2 дня и с лимитом в 40G. Кеширование включится, если к одному файлу было более 5 некешированных запросов.

domain

domain host.ru; Указание доменов, на которых можно проигрывать это видео. Не работает для клиентов, которые не передают Referer.

domains

domains host1.ru *.host1.ru; Указание доменов, на которых можно проигрывать это видео. Не работает для клиентов, которые не передают Referer.

path

path /storage;

path s3://key:secret@s3.amazonaws.com/bucket/;
Путь для поиска файлов. Можно указать несколько путей.

read_queue

read_queue 100; Количество одновременных обращений к диску для этого префикса.

download

download; Эта опция разрешает скачивание файла и обращение к нему с Range запросами.

max_readers

max_readers 10; Опция настраивает максимальное количество одновременных дисковых запросов ко всему префиксу.

thumbnails

thumbnails offset=10; Опция включает генерацию скриншотов к файлам с опциональным указанием секунды видео.

auto_mbr

auto_mbr; Включает автоматическое создание мультибитрейтного HLS плейлиста из нескольких файлов с разным битрейтом.

Мультиязыковой стриминг

Протоколы HLS и HDS дают возможность переключать языки. Flussonic Media Server включит эту опцию автоматически, если вы просто добавить дополнительные языковые дорожки в mp4 файл.

Для включения субтитров, надо также просто добавить субтитры в формате tx3g в виде дорожек в MP4 файл.

Экспорт трека с субтитрами в виде SRT

Flussonic Media Server может отдать субтитровый трек в mp4 в виде SRT, необходимом для некоторых flash-плееров:

http://192.168.2.3:8080/vod/video.mp4/track-t1.srt

Адаптивный стриминг (мультибитрейт)

Для того, чтобы обеспечить комфортный просмотр пользователям, подключенным на разных скоростях к интернету, можно воспользоваться адаптивным стримингом. Flussonic поддерживает два способа:

  • Использование нескольких файлов с одинаковым содержимым, но с разными качеством.

    Flussonic автоматически создает один мультибитрейтный плейлист для воспроизведения этих файлов как одного ресурса. Как это настроить

  • Использование одного файла, содержащего дорожки разного качества.

    Для этого надо создать мультибитрейтный MP4 файл и запросить для него манифест для проигрывания. Дальнейшее Flussonic Media Server сделает сам. В разделе про подготовку файлов подробнее описано, как делать мультибитрейтные файлы.

Подготовка файла к вещанию (транскодирование)

Ниже приведен принципиальный пример, как сделать мультибитрейтный файл с помощью ffmpeg:

ffmpeg -i bunny.mp4 \
-map 0:0 -c:v copy \
-map 0:0 -c:v libx264 -b:v 150k  \
-map 0:0 -c:v libx264 -b:v 100k \
-map 0:1 -c:v libx264 -b:v 50k \
-map 0:1 -c:a copy \
-map 0:1 -c:a copy \
-y out.mp4

Более подробно процесс описан в разделе «Подготовка к вещанию».

Рестриминг VOD

Библиотека VOD имеет большой объём, и её копирование между серверами дорого по ресурсам, но Flussonic может выполнять рестриминг видеофайлов на соседние серверы Flussonic. Это сэкономит не только время, но и место, требуемое для хранения VOD контента. Сэкономленные ресурсы можно использовать для включения кэширования VOD контента, что увеличит производительность VOD-рестримера.

Пример конфигурации VOD-каталога:

Основной сервер VOD

file vod {
  path priv;
  download;
}

Рестример VOD

file vod {
  path http://FLUSSONIC-SOURCE/vod;
  cache /mount/cache 500G misses=2;
}