Документация на 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 (Nvidia NVENC)
    3. Hardware (Intel Quick Sync Video)
    4. Скриншоты
    5. Мозаика
  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. Реклама

Конвертация субтитров из DVB в WebVTT

Flussonic Media Server может распознавать DVB-cубтитры и конвертировать их в текстовый формат WebVTT. Это необходимо для того, чтобы вы могли показать субтитры на мобильных устройствах и плеерах без поддержки DVB.

Важно. Функция OCR-распознавания субтитров доступна в рамках отдельной лицензии, которая приобретается дополнительно.

Распознавание осуществляется с помощью программы Tesseract OCR. Tesseract распознает текст и передает его Flussonic, который затем создает WebVTT субтитры, доступные по HLS.

О DVB субтитрах Anchor Anchor x2

Стандарт DVB (Digital Video Broadcast) определяет формат субтитров на основе растрового изображения. В MPEG-TS потоке со спутника DVB субтитры могут идти как текстом, так и изображением. Чаще всего используется передача изображений, так как этот вариант надежнее для просмотра на различных устройствах, которые могут не иметь нужных шрифтов для отрисовки текста.

Например:

 ffmpeg -i video.ts 
Stream #0:0[0x1a4]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x1ae](fra): Audio: eac3 ([6][0][0][0] / 0x0006), 48000 Hz, stereo, fltp, 128 kb/s
    Stream #0:2[0x1af](qad): Audio: eac3 ([6][0][0][0] / 0x0006), 48000 Hz, stereo, fltp, 128 kb/s
    Stream #0:3[0x1b8](fra): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006) (hearing impaired)
    Stream #0:4[0x1b0](qaa): Audio: eac3 ([6][0][0][0] / 0x0006), 48000 Hz, stereo, fltp, 128 kb/s
    Stream #0:5[0x1b9](fra): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)

Здесь dvb_subtitle — это субтитры, которые приходят изображениями.

DVB субтитры показываются приставками, некоторыми телевизорами, плеером VLC, но не смартфонами iPhone/Android. Flussonic Media Server распознает эти изображения и переведет в текст для показа на таких устройствах.

О WebVTT субтитрах Anchor Anchor x2

WebVTT (Web Video Text Tracks) — это распространённый формат субтитров, который хорошо поддерживается браузерами и предоставляет ряд других возможностей. Конвертируя DVB субтитры в WebVTT, можно уменьшить нагрузку на канал передачи потока.

Файл формата WebVTT является обычным текстовым файлом с расширением .vtt, в котором в виде построчного списка прописаны метки с временем старта и временем окончания и текстовые сообщения для вывода к этим меткам.

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

Эти файлы могут использоваться для передачи дополнительных данных в JS плееры. Например, URL-превью картинок для кадров потока. Стандарт WebVTT также поддерживает CSS-стилизацию и опции по размещению в области просмотра видео.

Установка и настройка Anchor Anchor x2

Tesseract — качественный консольный OCR движок с открытым исходным кодом. Программа работает с UTF-8, а поддержка языков (включая русский) осуществляется с помощью дополнительных модулей.

Чтобы настроить распознавание и преобразование DVB субтитров:

  1. Установите Tesseract.

    Для операционной системы Ubuntu есть возможность установить готовый пакет flussonic-tesseract:

    apt install flussonic-tesseract
    
  2. После установки Tesseract добавьте в настройки потока следующую строку:

    dvbsubs_ocr=true;
    

    Опция dvbsubs_ocr=true включает механизм преобразования DVB субтитров в WebVTT.

    Пример:

    stream ort {
      url tshttp://source:8080/stream dvbsubs_ocr=true;
    }
    
  3. Для применения настроек выполните команды в консоли:

    /etc/init.d/flussonic reload
    

Если Tesseract запустился для потока, то в логах появятся примерно такие записи:

09:44:17.986 <0.966.0> [sow] tesseract_worker:58 start ocr for slv
09:44:18.275 <0.966.0> [sow] tesseract_worker:58 start ocr for srp
09:44:18.759 <0.966.0> [sow] tesseract_worker:58 start ocr for swe
09:44:19.045 <0.966.0> [sow] tesseract_worker:58 start ocr for dan
09:44:19.328 <0.966.0> [sow] tesseract_worker:58 start ocr for nor

Пример HLS плейлиста index.m3u8 с субтитрами:

#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="eng",URI="http://flussonic-ip/index.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="French",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,LANGUAGE="fra",URI="http://flussonic-ip/index.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="German",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,LANGUAGE="deu",URI="http://flussonic-ip/index.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=450560,RESOLUTION=480x352,SUBTITLES="subs"
http://flussonic-ip/index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=855040,RESOLUTION=480x352,SUBTITLES="subs"
http://flussonic-ip/index.m3u8