Олег Березин, председатель российской секции SMPTE, директор Высшей школы киноинженеров, генеральный директор «Невафильм», выступил с докладом «Десятиминутка SMPTE Олега Березина — «Применение языка разметки синхронизированного текста TTML для передачи надписей и субтитров. Обзор стандарта ST 2110-43: 2021» на Online круглом столе «Broadcasting 2021 Armenia. Технологический обзор телекомпаний».
Online круглый стол «Broadcasting 2021 Armenia. Технологический обзор телекомпаний» состоялся 16 ноября 2021 года. Модератор — Ваагн Назарян, технический директор Shant TV (Армения).
Олег Березин: Сегодня я предлагаю поговорить о субтитрах и о новом стандарте SMPTE, принятом в 2021 году. Он определяет передачу субтитров в формате TTML в логике семейства стандартов ST2110.
В первую очередь, давайте ещё раз разберемся какие бывают субтитры. Субтитры бывают закрытые и открытые.
Открытые – это то, что мы видим, то, что вложено в кадр, то, что эмбидировано в изображение, как правило, идёт вместе с видеопотоком. Открытые субтитры не требуют никаких особых устройств для воспроизведения, но у них есть явный недостаток – они неубираемые.
Закрытые субтитры устроены по-другому. Пользователь может управлять такими субтитрами, включать и выключать. Если у нас несколько файлов субтитров, то пользователь может выбирать, например, язык субтитров, в некоторых случаях еще и изменять шрифт, размер и цвет символов.
Один из важных способов применения закрытых субтитров – это субтитры для инвалидов по слуху. То есть там, где, кроме самого текста речи, передаются описания окружающего мира, какие-то звуки и так далее.
Важно напомнить, что по российскому закону, теперь не менее пяти процентов программ надо показывать с закрытыми субтитрами.
Презентация: Олег Березин, SMPTE: Обзор стандарта ST 2110-43: 2021
В профессиональное среде есть небольшая сумятица в терминологии – в литературе и в технических описаниях можно встретить термины «Captions»и «Subtitles».
Изначально термином Captions описывали именно закрытые субтитры. Но сегодня американцы называют термином Captions все типы субтитров (открытые субтитры, закрытые субтитры, надписи), а в Европе более распространено использование термина Subtitles.
Еще одно важное отличие субтитров друг от друга – это способ передачи. Сегодня мы передаём субтитры в виде текста, в виде символов либо в виде изображения символов. Субтитры можно передавать XML-файлами или в формате WebVTT – тестовом формате безо всяких ухищрений. С помощью XNL-файла мы можем сделать файл описаний ссылок на PNG-изображение, то есть на готовое изображение субтитров, которое определяем, каким образом встаёт на кадр. Этот метод очень часто используется, например, в цифровом кинематографе.
Но здесь есть нюанс: если мы перекодируем текст в другое разрешение, то нужно следить, как встанет изображение в новом формате.
Еще один способ – это преобразование бинарного изображения в набор символов двоичных кодов, который позволяет передавать изображение в виде текстаXML-файла. То есть существуют различные способы передачи субтитров, главное – понимать, что есть текстовые способы передачи, символьные способы и передача в виде готовых изображений субтитров.
С общим развитием медиатехнологий меняются и технологии выдачи субтитров. Особый интерес представляет процесс выдачи субтитров в реальном времени для телепрограмм, идущих в прямом эфире. Еще недавно для выдачи субтитров в реальном времени использовался ручной труд талантливых машинисток и стенографисток, которые на ходу вводили в систему текст субтитров прямо в живом эфире. Сегодня появляются новые технологии распознавания речи из фонограммы, преобразования на лету речи в текст и далее уже выдача субтитров в прямом эфире. Понятно, что технологии развиваются, и здесь допустима определённая доля ошибок, потому что все понимают, что это делалось на ходу.
Тайминг-текст
За годы своего существования субтитры переживали много изменений в зависимости от способов вещания от аналогового до онлайн-вещания. Например, спецификация 608 (CEA-608 или EIA-608) – основной стандарт «встроенных» субтитров в США. Предназначен для производства и передачи текста в 21 строке SD сигнала NTSC. Широко используется до сих пор в телевещании США и стандарт в виде эмбедированных данных спецификации 608 в данные спецификации 708, предназначенной для передачи в составе HD сигнала SDI (608 over 708).
EBU-STL – европейский стандарт передачи символов текста в виде «внешних», вне основного сигнала, данных. Используется для производства и обмена программами. В настоящее время применяется как один из основных форматов архивирования видеопрограмм, и имеет очень известное многим расширение файлов *.stl.
Несколько лет назад консорциум всемирной паутины подготовил документ TTML. Это спецификация языка разметки синхронизированного текста, того, что сегодня называется тайминг-текст, так как сегодня стараются уже не использовать слово «субтитры».
Тайминг-текст – широкое понятие. Это синхронизированный текст и язык разметки этого текста, который породил достаточно много профилей. Спецификация языка разметки синхронизированных текстов — это базовая спецификация, которая занимает 380 страниц. Это документ на базе XML, который используется для создания открытых субтитров, закрытых субтитров, и даже есть возможности для создания медиа на основе текстов.
На основе спецификации TTML было разработано несколько специализированных профилей.
Например, SDP-US – профиль для передачи субтитров спецификаций 608/708 в логике TTMLв онлайн-вещании.
WebVTT – формат, предложенный компанией Google, сейчас поддерживается всеми браузерами и используется для передачи субтитров в онлайн-среде.
EBU-TT – основной профиль для передачи субтитров в европейском телевещании. В своё время для интернета консорциумом голливудских студий Ultraviolet было разработано два профиля CFF-TT- для передачи субтитров в виде текста и в виде изображений.
Профиль IMSC – это профиль для создания и доставки субтитров в среде интернет.
В интересах индустрии телевещания SMPTE также разработала на базе TTML-спецификации свой профиль SMPTE-TT, содержащий определённые ограничения и определённые возможности для применения TTML-спецификации в медиаиндустрии. В профиле SMPTE-TT используется временная основа SMPTE. Этот профиль считается одним из самых оптимально описанных и сегодня широко используется не только в медиаиндустрии, но и в онлайн-вещании.
Серия стандартов 2052
На базе профиля SMPTE-TT была разработана серия стандартов ST 2052. Один из них как раз описывает профиль SMPTE-TT, а два стандарта описывают конвертирование данных из спецификации 608 в SMPTE-TT и из спецификации 708 в SMPTE-TT.
Стандарт ST 2052–1 – базовый стандарт формата для синхронизированного текста SMPTE-TT. Он закладывает несколько возможностей для развития этого стандарта в медиаиндустрии, описывает, как использовать этот стандарт при передаче в виде служебных данных в SDI, в MPEG-потоках, в IP-сетях.
Очень важный момент стандарта ST 2052 – это представление субтитров не в виде одного TTML-документа, а в виде подмножества элементарных TTML-документов, которые привязаны к медиаконтенту по времени. Эти элементарные документы так и называют – чанки, то есть короткие кусочки, которые не содержат ссылок ни на какой родительский документ.
Для чего это сделано? Если вы подключаетесь к медиапотоку в любой момент времени, то определенным способом вы должны, не зная, что было «вчера», поймать субтитры и начать их воспроизводить или предавать в зависимости от того, как вы этим пользуетесь. Такая идеология разделения одного глобального документа, который описывает все субтитры, на элементарные фрагменты, и передача их к определенному времени без привязки к тому, что было до этого, очень важна сейчас и в будущем.
Возвращаясь к теме передачи субтитров в семействе стандартов ST 2110 необходимо отметить, что вообще-то мы уже умеем передавать субтитры в логике 2110. У нас есть стандарт ST2110-40, который позволяет передавать служебные данные SDI, а в служебных данных ANC есть данные субтитров, которые успешно передаются различными способами – на американском рынке по стандарту ST 334, у европейцев активно используется австралийская Рекомендация OP-47, которая широко применяется и в России. Это Рекомендация, которая позволяет передавать субтитры в HD-сигнале таким образом, чтобы они нормально воспроизводились и в SD-сигнале.
Так если мы можем и так сегодня передавать субтитры в 2110, зачем же надо было придумывать отдельный стандарт? Основополагающий принцип 2110 состоит в том, что мы все компоненты медиасигнала передаем раздельно в виде элементарных потоков данных: видео отдельно и только активное видео, звук отдельно и только аудиоданные каналов. Соответственно, хочется передавать и субтитры не в виде служебных данных ANCSDI, а в виде отдельного медиапотока субтитров, которые можно синхронизировать с другими потоками, перенаправлять, маршрутизировать и так далее.
Логика 2110–43 базируется на ещё одном стандарте интернета – RFC 8759. Это основополагающий RFC, который описывает полезную нагрузку RTP-пакета и формат заголовка RTP-пакета для передачи TTML-файлов. Мы используем стандартный RTP-пакет, и RFC описывает то, как TTML-документ может быть передан с помощью RTP-пакета.
Возвращаясь к логике элементарной передачи кусочков этих субтитров, речь идёт о том, что мы в потоке передаём постоянно поток TTML-документов на каждый субтитр. Этот субтитр может быть передан одним пакетом RTP либо несколькими. Важно, что последний RTP-пакет субтитра, этого элементарного документа будет содержать маркер-бит, равный 1. Это очень важный бит, потому что по нему мы будем понимать, когда закончился RTP-поток конкретного элементарного документа. Система, считывая данные входа-выхода, может эти пакеты размещать в потоке.
И еще один важный момент, на который надо обратить внимание. Традиционно в ST 2110 используется единая временная метка для всех пакетов всего кадра или поля, при чересстрочной развертке. И в разных потоках одного и того же медиаконтента (например, вещание в прямом эфире, а затем воспроизведение в записи) эти временные метки будут естественно разными. Поэтому при передаче субтитров используется очень изящный приём. Когда мы размечаем субтитры, то нам важна привязка во времени внутри документа, то есть медиаконтента. Если мы решим, что этот медиаконтент необходимо воспроизвести в записи, то нам нужно будет каждый раз пересинхронизировать текст субтитров с передаваемым в другое время видеопотоком, и, в итоге мы получим очень много проблем, если у нас не будет привязки к временной шкале самих субтитров. Что было предложено? Мы передаём во всех RTP-пакетах потока субтитров одну, одинаковую для всех RTP-пакетов временную метку, которая соответствует нулевому отчету нашей видеопрограммы. Потом, какое бы время мы не передавали, действительная временная метка каждого пакета будет представлять собой нулевую метку нашего медиафайла плюс определённый офсет (сдвиг). А этот офсет как раз соответствует времени ввода и времени вывода конкретного субтитра. Таким образом, в какое бы время мы не начали передавать видеосигнал с нашим потоком субтитров, мы всегда будем привязаны к нулевой метке программы как к нулю и от него будем передавать временную метку плюс офсет, для того чтобы каждый субтитр попал на свое место. Если просто в какой-то момент мы подключились к потоку, то мы слушаем поток, ждём, когда передастся RTP-пакет с маркер-битом, равным 1, это значит закончилась передача предыдущего субтитра. Затем начинаем принимать субтитры, высчитываем временную метку начала программы и соответствующий офсет и в нужный момент этот субтитр воспроизводим.
Итак, стандарт ST 2110-43 как раз описывает, как мы эти RTP-пакеты с элементарными TTML-файлами субтитров можем передавать в логике 2110. Суть стандарта состоит в нескольких ограничениях, которые устанавливаются для потоков пакетов, чтобы передавать в 2110. Здесь я хочу обратить внимание еще на два момента.
Первое: частота генератора основного времени для генерации временной метки, так как мы работаем в медиаиндустрии, – 90 кГц, в то время как TTML оговаривает частоту генератора в 1 кГц.
Второе: мы можем использовать пустые пакеты RTP с маркер-битом, равным 1, для того чтобы периодически передавать, что поток жив, что поток идёт.
В целом ST2110-43 очень простой стандарт, но благодаря тому, что была подготовлена почва в виде TTML-языка разметки, в виде описания профиля SMPTE-TT в ST2052, в виде RFC, который описывает, как передать TTML в RTP-пакетах, то мы можем достаточно просто описать наши требования, чтобы передавать чистые субтитры в виде элементарных TTML-пакетов в логике 2110.
Игорь Таранцев, руководитель отдела разработок «СофтЛаб-НСК»: Правильно ли я понимаю, что этот стандарт предполагает передачу Unicode-текстов и там нет передачи картинок?
Олег Березин: TTML подразумевает передачу PNG-файла изображений субтитров, его можно передавать. Но с изображениями субтитров надо быть очень внимательным, потому что мы же любим конвертировать видеосигнал из HD в SD, а когда мы используем изображение субтитров, а не текстовый либо символьный формат субтитров, то мы привязаны к координатам на экране, и важно смотреть, как это будет транслироваться в другом формате.