Skip to content

Скрытые субтитры вещательного канала

Эфирный канал почти всегда несёт скрытые субтитры (closed captions) — они едут не отдельной дорожкой, а внутри самой картинки, в служебных данных видеокадров. Телевизор, включённый в кабель или антенну, их показывает. Абонент того же канала в вашем приложении — нет.

Catena декодирует эти субтитры и отдаёт их отдельной дорожкой WebVTT, которую понимают все OTT-плееры. Ничего дополнительного к каналу подключать не нужно: текст берётся из того же сигнала, который вы уже принимаете.

Зачем это провайдеру

  • Субтитры перестают теряться на пути к абоненту. Вещатель их отдал, ваш плеер их не показал — жалоба придёт вам, а не вещателю.
  • Требования доступности. В США CVAA обязывает сохранять субтитры при онлайн-раздаче того, что показывалось в эфире; в Европе того же требует European Accessibility Act. Практический смысл один: если субтитры были в эфирной версии, они должны быть и в приложении.
  • Многоязычие даром. Вещатель часто кладёт в один канал два-три языковых сервиса (в США это английский и испанский). Каждый становится отдельным пунктом меню субтитров — без второго входа и без ручной работы.
  • Один вход — все выдачи. Раскодировали один раз на приёме, отдали и в браузер, и в приложение, и в телевизор.

Каким устройствам нужно преобразование

Встроенные субтитры умеет читать далеко не всё, что смотрит ваш абонент:

  • Браузер — самый частый случай отказа. Веб-плееры (hls.js, dash.js, Shaka) отдают картинку через Media Source Extensions и встроенные субтитры не разбирают: CEA-708 не читают вовсе, CEA-608 — в лучшем случае частично. Личный кабинет и веб-плеер без преобразования остаются без субтитров.
  • DASH-раздача — вне зависимости от устройства. Встроенные субтитры в DASH формально объявить можно, но плееры их не ищут; работает только отдельная дорожка.
  • Android-приложения и Smart TV — как повезёт. Родные плееры Tizen и webOS обычно понимают CEA-608 и спотыкаются на CEA-708; приложения на ExoPlayer читают 608 и не всегда 708, а в DASH не читают ничего.
  • Приставки и веб-плееры собственной разработки — почти никогда: разбор встроенных субтитров пришлось бы писать самим.
  • WebRTC и низколатентные раздачи — встроенные субтитры туда не доезжают в принципе.

Умеют нативно немногие: Safari и iOS для HLS, Apple TV, Roku. Именно поэтому проверка «у меня на айфоне субтитры есть» ничего не говорит про остальной парк устройств.

Как включить

Откройте стрим, вкладка Основные настройки, секция Кэпшны. Catena показывает там сервисы, которые реально говорят в потоке (CC1CC4 для CEA-608, SERVICE1SERVICE63 для CEA-708), и позволяет выбрать режим выдачи:

  • Внутри видео (умолчание) — как приняли, так и отдали. Субтитры объявлены встроенными, отдельной дорожки нет.
  • Дорожкой вместо встроенных — субтитры отдаются дорожкой WebVTT, а из видео вырезаются. Пункт меню в плеере ровно один.
  • И внутри видео, и дорожкой — оба способа сразу. Берите его, если тот же канал одновременно уходит абонентам и по MPEG-TS.

Там же можно задать язык и название сервиса — они станут подписью пункта меню в плеере. Без них подпись выводится из потока, а если язык не объявлен — из адреса сервиса.

Режим «дорожкой вместо встроенных» и MPEG-TS

В этом режиме субтитры вырезаются из видео на всех раздачах, включая MPEG-TS: push по udp/rtp/srt и .ts-сегменты. Текстовой дорожке внутри MPEG-TS ехать не в чем, поэтому потребитель такой раздачи останется без субтитров вообще. Если канал забирают по MPEG-TS — выбирайте «и внутри видео, и дорожкой».

Что увидит абонент

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

Субтитры работают и в архиве: они пишутся всегда, независимо от выбранного режима. Поэтому режим можно включить задним числом — субтитры появятся и на уже записанных передачах.

Если субтитров нет

  1. Секция «Кэпшны» пуста. Значит в потоке их не видно. Убедитесь, что смотрите живой стрим: сервисы определяются по эфиру, а не по конфигурации.
  2. Сервис виден, а дорожки в плеере нет. Проверьте режим: во «внутри видео» дорожки не будет по определению.
  3. Дорожка есть, текста нет. Нормально, если в эфире сейчас молчат: пустые окна субтитров — штатное состояние. Если текста нет и во время речи, пришлите фрагмент потока в поддержку.
  4. Субтитры пропали у части абонентов после переключения в режим «дорожкой вместо встроенных». Почти наверняка это потребители MPEG-TS — вернитесь к режиму «и внутри видео, и дорожкой».