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

  1. Быстрый старт
  2. How-to
  3. Потоковое вещание
    1. Варианты источников
    2. Переключение источников
    3. Публикация на Flussonic
    4. Прием мультикаста
    5. Серверные плейлисты
    6. Микширование
    7. Захват с SDI
    8. Отправка на другие серверы
    9. Распознавание DVB субтитров
    10. Наложение логотипа
  4. Транскодер
    1. Логотип
    2. Hardware
    3. Скриншоты
    4. Мозаика
  5. DRM
    1. Simple CAS
    2. Conax DRM
    3. BuyDRM (KeyOS)
    4. Widevine
    5. PallyCon
    6. EzDRM
  6. Авторизация
    1. Конструктор бэкендов
    2. Сервис сбора статистики
    3. Domain lock
    4. Middleware
    5. Secure links
    6. Ограничение сессий
    7. Мультиавторизация
    8. Бан IP адресов
    9. DVR
    10. Aliaser
  7. API
    1. HTTP API
    2. Events API
    3. MySQL API
    4. SQL API для кластеров
    5. SNMP
  8. Кластер
    1. Ретрансляция
    2. Кластерный захват
    3. Балансировщик нагрузки
    4. Пиринг
    5. Организация CDN
  9. VOD
    1. Кэш
    2. Облако
    3. Транскодирование файлов
    4. Мультибитрейтный VOD из файлов
  10. DVR
    1. Настройка
    2. Timeshift
    3. Catchup
    4. Проигрывание
    5. Экспорт в MP4
    6. Доступ по протоколам
    7. Timelapse
    8. API
    9. Кластеризация DVR
    10. Репликация
    11. Облако
  11. Воспроизведение
    1. HLS
    2. embed.html
    3. HTML5 с низкой задержкой
    4. Плеер HTML5 с низкой задержкой
    5. MPEG-TS
    6. RTMP
    7. DASH
    8. HDS
    9. RTSP
    10. Multicast
    11. Multicast с постоянным битрейтом
    12. WebRTC
    13. H.265
  12. Администрирование
    1. Установка
    2. Обновление
    3. Конфигурация
    4. Мониторинг
    5. Производительность
    6. Лицензия
    7. LUA скрипты
    8. Безопасность
    9. Let's Encrypt
    10. Миграция
  13. IPTV
    1. Захват спутникового видео
    2. Транскодирование
    3. Middleware в IPTV OTT
    4. Экспорт EPG со спутника
    5. Группы каналов
    6. Реклама

Dynafile

Flussonic Media Server умеет транскодировать VOD контент «на лету». Мы не рекомендуем использовать эту возможность, потому что такой транскодинг — очень дорогая операция и невозможно предсказать нагрузку на процессор.

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

Также, вы можете использовать транскодер для накладывания уникальных водяных знаков (watermark) для каждого зрителя. Например, чтобы определить через кого произошла утечка контента.

Настройка Anchor Anchor x2

Плагин включается через конфигурационный файл. Откройте /etc/flussonic/flussonic.conf и добавьте:

plugin dynafile {
  cache /tmp/dynacache 2G;
  transcoder vb=2048k size=1280x720 vb=600k size=360x-1 hw=nvenc;
}

В этом примере мы будем кодировать в два качества и использовать аппаратное ускорение. Обязательно нужно указать директорию для кеширования.

Важно! Плагин dynafile включает транскодирование сразу для всех VOD локаций, нельзя включить транскодирование только для одной директории.

Для просмотра видео через плагин, нужно добавить /dynafile/ к URL:

  • http://flussonic-ip/vod/bunny.mp4/embed.html — просмотр напрямую, без транскодера.
  • http://flussonic-ip/dynafile/vod/bunny.mp4/embed.html — просмотр через транскодер.

Наложение watermark Anchor Anchor x2

Flussonic Media Server может накладывать уникальный watermark (логотип) для каждого зрителя. Для этого нужно настроить авторизационный бэкенд чтобы возвращал PNG изображение в формате base64.

Ниже код lua-бэкенда, который сделает запрос за логотипом к внешней системе и передаст его транскодеру:

prepare = function(key)

  name = string.gsub(req.name, "vod/", "")
  qs = {ip = req.ip, token = req.token, name = name, resolution = key}
  url = "http://example.com/getWatermark?"..http.qs_encode(qs)
  response = http.get(url, 10000)

  if not (response.code == 200) then
    return false,{code = response.code}
  end

  png = base64.decode(response.body)
  -- path = "/tmp/"..crypto.sha1(key..name..request.token)..".png"
  return png
end

extra = {}

string.gsub(req.sizes, "([^,]+)", function(w) extra[w] = prepare(w) end)

flussonic.log(table.tostring(req))
return true,{extra = extra}

Сохраните этот файл в /etc/flussonic/dynafile.lua и настройте Flussonic Media Server:

file vod {
  path /storage/vod;
  cache /tmp/cache 10G;
  auth /etc/flussonic/dynafile.lua;
}
plugin dynafile {
  cache /tmp/dynacache 2G;
  transcoder vb=2048k size=1280x720 vb=600k size=360x-1 hw=nvenc;
}