Конвертация DVB-субтитров в HLS/DASH WebVTT¶
Flussonic Media Server может распознавать DVB-cубтитры и конвертировать их в текстовый формат WebVTT. Это необходимо для того, чтобы вы могли показать субтитры на мобильных устройствах и плеерах без поддержки DVB.
Note
Функция OCR-распознавания субтитров доступна в рамках отдельной лицензии, которая приобретается дополнительно.
Распознавание осуществляется с помощью программы Tesseract OCR. Tesseract распознает текст и передает его Flussonic, который затем создает WebVTT субтитры, доступные по HLS.
Содержание:
См. также:
О DVB-субтитрах¶
Стандарт DVB (Digital Video Broadcast) определяет формат субтитров на основе растрового изображения. В MPEG-TS потоке со спутника DVB субтитры могут идти как текстом, так и изображением. Чаще всего используется передача изображений, так как этот вариант надежнее для просмотра на различных устройствах, которые могут не иметь нужных шрифтов для отрисовки текста.
Например:
ffprobe stream_sample.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-субтитрах¶
WebVTT (Web Video Text Tracks) — это распространённый формат субтитров, который хорошо поддерживается браузерами и предоставляет ряд других возможностей. Конвертируя DVB субтитры в WebVTT, можно уменьшить нагрузку на канал передачи потока.
Файл формата WebVTT является обычным текстовым файлом с расширением .vtt
, в котором в виде построчного списка прописаны метки с временем старта и временем окончания и текстовые сообщения для вывода к этим меткам.
К видео-контейнеру можно подключить несколько файлов WebVTT с текстом на разных языках. Для каждого языка нужно создавать отдельный файл.
Эти файлы могут использоваться для передачи дополнительных данных в JS плееры. Например, URL-превью картинок для кадров потока. Стандарт WebVTT также поддерживает CSS-стилизацию и опции по размещению в области просмотра видео.
Установка и настройка¶
Tesseract — качественный консольный OCR движок с открытым исходным кодом. Программа работает с UTF-8, а поддержка языков (включая русский) осуществляется с помощью дополнительных модулей.
Чтобы настроить распознавание и преобразование DVB субтитров:
-
Установите Tesseract.
Для операционной системы Ubuntu есть возможность установить готовый пакет flussonic-tesseract:
apt install flussonic-tesseract
2. Для получения дорожки с текстовыми субтитрами добавьте в файле/etc/flussonic/flussonic.conf
в настройки потока следующую строку:subtitles=ocr_replace;
Опция
subtitles=ocr_replace
включает механизм преобразования DVB субтитров в WebVTT. При этом дорожка с новыми субтитрами в текстовом формате заменяет в выходном потоке дорожку с DVB-субтитрами.Пример:
stream tvchannel { input tshttp://SOURCE:80/STREAM subtitles=ocr_replace; }
Если в выходном потоке необходимо получить как прежнюю дорожку с DVB-субтитрами, так и новую дорожку с текстовыми субтитрами, то используется опция
subtitles=ocr_add
:stream tvchannel { input tshttp://SOURCE:80/STREAM subtitles=ocr_add; }
Замечание. До выхода версии Flussonic 19.10 вместо
subtitles=ocr_replace
использовалась другая опция —dvbsubs_ocr=true
. -
Для применения настроек выполните команду в консоли:
service 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
После преобразования в выходном HLS потоке присутствуют субтитры в формате WebVTT:
Передача телетекста и Closed Captions¶
Flussonic умеет передавать телетекст и скрытые субтитры (closed captions), полученные по MPEG-TS. Для выходного HLS они будут преобразованы в WebVTT, а для DASH — в TTML. Cм. Телетекст и Сlosed Сaptions