Содержание статьи +
- TL;DR
- Зачем это важно
- Пакет – это больше, чем стопка видео
- Аудио: один набор видео, много языков – если демуксировать
- Громкость: дорожка, которую никто не замечает, пока она не сломана
- Субтитры и captions – это не одно и то же
- Треки доступности: описанное видео и forced narrative
- Как дорожки едут в манифесте
- Закон, который не пропустить: CVAA и WCAG
- Частая ошибка: мукс аудио в видео
- Где здесь Фора Софт
- Главное
- Что почитать дальше
TL;DR
Ваша encoding ladder – это не только видео: рядом с картинкой едут аудиодорожки (одна или много языков, каждая нормализованная по громкости), дорожки субтитров и captions (текстовые WebVTT и IMSC либо CEA-608/708, вшитые в видео) и треки доступности (описанное видео и forced-narrative субтитры). Единственное решение, которое задаёт их стоимость, – держите ли вы аудио отдельно от видео, то есть демуксировано, чтобы десять языков добавляли десять небольших аудиодорожек, а не десять полных копий всей видео-лесенки. Форматы стриминга несут всё это через небольшой набор объявлений в манифесте: HLS использует группы рендишнов EXT-X-MEDIA (RFC 8216 §4.3.4.1), а DASH – отдельные AdaptationSet с дескрипторами языка и роли (ISO/IEC 23009-1). Спланируйте дорожки правильно – и один мастер обслужит каждый язык и каждую нужду доступности тонким дополнительным слоем; ошибитесь – и вы либо удвоите хранение, либо отдадите каталог, который в США распространять нельзя.
Зачем это важно
Если вы основатель, продакт-менеджер или CTO стриминга впервые, не-видео дорожки – это место, где каталоги тихо становятся немасштабируемыми или неправомерными. Команда, которая муксирует (сливает) аудио в видеосегменты, на третьем языке обнаруживает, что добавить четвёртый – значит заново переупаковать всю видео-лесенку, и счёт за хранение растёт с каждым дубляжом. Команда, которая считает captions «субтитрами, которые добавим потом», обнаруживает, что любая единица контента, шедшая на ТВ США с субтитрами, по закону обязана нести их и онлайн, и что субтитры для слышащих зрителей – это не тот же артефакт, что captions для глухих и слабослышащих. Эта статья даёт ментальную модель, чтобы спланировать аудио, субтитры и треки доступности один раз: что такое каждый тип дорожки, как удешевить аудио, отвязав его от видео, какой формат субтитров выбрать, как дорожки едут в манифесте, и какой закон о доступности превращает часть из них из «хорошо бы» в «обязано быть».
Пакет – это больше, чем стопка видео
Раньше в этом блоке мы рассматривали encoding ladder как набор видео-рендишнов – одну и ту же единицу контента на нескольких шагах «разрешение + битрейт», чтобы плеер выбирал ступень, которую тянет сеть. (Если идея новая, начните с encoding ladder простыми словами.) Эта картина неполна. Реальный стриминговый пакет несёт несколько параллельных дорожек, и только одна из них – видео.
Думайте о пакете как о многодорожечной записи, а не об одной плёнке. Есть одна видео-дорожка (лесенка рендишнов). Рядом – аудио-дорожка, в которой может быть несколько треков: язык оригинала, дубляжи на других языках, комментарий режиссёра, трек описанного видео для слепых и слабовидящих. Рядом – текстовая дорожка с субтитрами и captions, по одному на язык, плюс спецтреки. Плеер собирает сессию просмотра, выбирая одну ступень из видео-дорожки и по одному треку из остальных: видео 1080p, испанское аудио, английские captions, например. Задача упаковки – выложить эти дорожки бок о бок, чтобы любая комбинация играла синхронно.
Почему это важно для стоимости и масштаба: дорожки сильно различаются по размеру. Видео огромно; аудио мало; текст крошечен. Видео-лесенка двухчасового фильма может суммарно давать около 17,5 мегабит в секунду хранимого битрейта по своим ступеням (математика лесенки разобрана в статье про encoding ladder). Одна стереодорожка – около 128–256 килобит в секунду, меньше 2% от этого. Полный файл субтитров к фильму – несколько сотен килобайт, погрешность округления. То есть сами дорожки дёшевы. Дорого не это – а случайно привязать дешёвую дорожку к дорогой, и именно эту ошибку предотвращает следующий раздел.
Аудио: один набор видео, много языков – если демуксировать
Вот самое дорогое решение во всей статье, и большинство команд принимают его случайно.
Упаковывая видео и аудио, вы можете их смуксировать – переплести аудиосэмплы в те же файлы сегментов, что и видео, так что каждый сегмент – самодостаточный кусок «видео-плюс-звук» – или демуксировать, держа аудио в собственных отдельных файлах, на которые ссылается манифест рядом с видео. Мукс – очевидный дефолт, потому что так устроен обычный MP4 на ноутбуке: один файл, картинка и звук вместе. Для одноязычного стриминга это нормально. Для многоязычного – ловушка.
Ловушка – дублирование. Если аудио смуксировано в видеосегменты, то каждому языку аудио нужна своя полная копия видеосегментов, потому что видео и аудио физически сварены в одних файлах. Два языка – две полные видео-лесенки. Десять языков – десять. Видео – дорогую дорожку – умножают на число, которое к видео никакого отношения не имеет.
Демукс разрывает сварку. Когда аудио в отдельных файлах, вы храните видео-лесенку один раз и добавляете по одной небольшой аудиодорожке на язык рядом. HLS создан ровно для этого: тег EXT-X-MEDIA, определённый в спецификации HLS (IETF RFC 8216 §4.3.4.1), объявляет альтернативный аудиорендишн, который плеер забирает отдельно и играет синхронно с выбранной видеоступенью. DASH делает то же, помещая аудио в собственный AdaptationSet (ISO/IEC 23009-1). Отвязка аудио от видео – стандартный, поддержанный способ обслуживать много языков, не пересохраняя картинку.
Проговорим арифметику вслух – разрыв впечатляющий. Возьмём тот же двухчасовой фильм с видео-лесенкой 17,5 Mbps и пусть нужно десять языков аудио по 128 kbps каждый:
Смуксировано (аудио сварено с видео):
один язык = 17,5 Mbit/s видео-вариантов
десять языков = 17,5 Mbit/s × 10 = 175 Mbit/s хранимого
(картинку сохранили десять раз)
Демуксировано (аудио отдельно):
видео, хранится один раз = 17,5 Mbit/s
аудио, десять дорожек = 0,128 Mbit/s × 10 = 1,28 Mbit/s
итого = 17,5 + 1,28 = 18,78 Mbit/s
(картинка один раз плюс ~7% слой аудио)Десять языков обходятся примерно в 9× дороже по хранению и egress при муксе, чем при демуксе – 175 против 18,78 мегабит в секунду хранимого материала. Та же логика течёт прямо в счёт за доставку, потому что CDN кэширует и тарифицирует то, что отдаёт, и десять копий видео кэшируются в десять раз хуже одной. (Egress – повторяющаяся статья, решающая маржу; см. стоимость CDN: egress.) Демукс аудио – не оптимизация на потом, а дефолт, с которого многоязычный каталог обязан стартовать.
Пара слов о том, какой аудиокодек. Универсальный пол – AAC-LC (Advanced Audio Coding, Low Complexity): любое устройство, играющее HLS или DASH, декодирует стерео AAC, поэтому это безопасный минимум по охвату. Выше – форматы surround и иммерсивные: Dolby Digital (AC-3) и более эффективный Dolby Digital Plus (E-AC-3), несущие 5.1 surround и, с Dolby Atmos, объектно-ориентированный иммерсивный звук; а также Dolby AC-4, более новый кодек Dolby. Правила HLS authoring от Apple перечисляют среди поддержанных аудиоформатов AAC, AC-3, E-AC-3 и (на новых системах) адаптивный по битрейту xHE-AAC. Продуктовый паттерн – отдавать AAC-LC stereo как всегда-играющий fallback и предлагать surround-рендишн (обычно E-AC-3) альтернативой в той же аудио-группе для устройств гостиной, которые его поддерживают. Это ещё одна причина демуксировать: разные кодеки для одного языка – это просто новые рендишны в аудио-группе, а не новые копии видео.
| Аудиокодек | Каналы | Охват устройств | Роль в пакете |
|---|---|---|---|
| AAC-LC | Стерео (2.0) | Универсально – любое HLS/DASH-устройство | Базовый fallback; включайте всегда |
| HE-AAC v1/v2 | Стерео | Очень широко | Низкобитрейтное стерео для слабых сетей |
| xHE-AAC | Стерео | Новые iOS/Android, современные ТВ | Адаптивная речь/музыка; сверьте список устройств |
| Dolby Digital Plus (E-AC-3) | 5.1 / Atmos | Большинство Smart TV, стрим-устройств, консолей | Surround/иммерсивная альтернатива для гостиной |
| Dolby AC-4 | 5.1 / Atmos | Новые ТВ и устройства | Иммерсивный некст-ген; проверьте матрицу устройств |
Таблица 1. Аудиокодеки для OTT и колонка охвата, говорящая о досягаемости. AAC-LC – пол, на котором стоит всё остальное; демукс аудио позволяет предлагать несколько кодеков на язык как альтернативы. Поддержка устройств датирована – пересверяйте под целевые устройства, см. рендишны под устройство.
Громкость: дорожка, которую никто не замечает, пока она не сломана
У аудио-дорожки есть свойство, за которое зритель никогда не скажет спасибо, если всё хорошо, и всегда накажет, если плохо: громкость. Если трейлер играет на одной воспринимаемой громкости, а фильм – тише, зритель хватает пульт и винит ваше приложение. Консистентность по каталогу – инженерное требование, а не прихоть мастеринга.
Громкость измеряют, а не угадывают. Международный стандарт того, как измерять воспринимаемую громкость программного аудио, – ITU-R BS.1770 (текущая редакция BS.1770-4, 2015): он задаёт «K-взвешенное» измерение, приближающее то, как человеческий слух взвешивает разные частоты. Единица – LUFS (Loudness Units relative to Full Scale), тождественная LKFS из американских документов: оба акронима называют одно и то же число. Вокруг этого измерения разные индустрии задают разные цели:
- Вещание Европы опирается на EBU R128: интегрированная громкость программы −23 LUFS.
- Вещание США опирается на ATSC A/85: −24 LKFS – практика за американским «CALM Act», не дающим рекламе быть громче программ.
- On-demand стриминг идёт тише. Netflix, Amazon, Disney+ и Max целятся около −27 LKFS, измеряя dialogue-gated (громкость берётся только там, где есть речь), с потолком true-peak −2 dBTP.
- AES выпустил рекомендацию специально для стриминга, TD1008 (2021), предлагая около −18 LUFS для речевого контента и −16 LUFS для музыки, под прослушивание в наушниках и на мобильных.
Запоминать их не нужно – нужно выбрать одну цель на контекст доставки и нормализовать к ней каждую единицу контента. Цена пропуска конкретна: музыкальный клип на −16 LUFS рядом с фильмом на −27 LKFS – это скачок в 11 dB, а примерно каждые 10 dB удваивают воспринимаемую громкость, так что следующую единицу зритель услышит примерно вдвое громче. Механику измерения и коррекции громкости – gating, ограничение true-peak, loudness range – мы держим там, где ей место: см. нормализацию громкости в разделе Audio for Video. Для продуктового решения OTT держите одно правило: выберите цель по громкости на весь каталог и принуждайте её в ingest-QC (там и живёт этот гейт – см. QC кодирования и mezzanine-воркфлоу).
Субтитры и captions – это не одно и то же
Текстовая дорожка несёт две вещи, которые на экране выглядят одинаково, а по закону и содержанию различны. Понять разницу – это разница между доступной платформой и иском.
Субтитры (subtitles) предполагают, что вы слышите звук, но не понимаете язык. Они переводят произнесённый диалог – французское аудио, английские субтитры – и больше ничего. Captions предполагают, что вы не слышите звук вообще. Они включают диалог и не-речевую информацию, которую слышащий зритель получает бесплатно: звонок телефона, хлопок двери, [тревожная музыка], факт, что говорит закадровый голос. Более полную форму captions часто помечают как SDH (Subtitles for the Deaf and Hard-of-hearing) – она упаковывает captions-информацию во внешнем виде субтитров. Отдать субтитры и назвать платформу доступной – частая и серьёзная ошибка: глухому зрителю нужны captions, а не перевод.
Сам текст приходит в небольшом наборе форматов, и нужный зависит от того, как он переносится.
- WebVTT (Web Video Text Tracks) – общий веб-формат субтитров, простой текстовый формат, выросший из традиции SubRip (.srt). В упаковке fragmented-MP4 / CMAF он несётся как тип дорожки wvtt. Это формат, на который опирается HLS-путь Apple, и прагматичный дефолт для большинства каталогов.
- IMSC 1.1 (TTML Profiles for Internet Media Subtitles and Captions) – вариант broadcast-уровня, профиль XML-языка Timed Text Markup Language (TTML), опубликованный как рекомендация W3C (8 ноября 2018; вторая редакция 4 августа 2020). Он даёт более богатую стилизацию и позиционирование, определяет профиль Text и профиль Image (каждый cue – PNG, для письменностей, требующих точного рендера) и является профилем TTML, который разрешает стандарт упаковки CMAF. В fMP4 он несётся как тип дорожки stpp.
- CEA-608 / CEA-708 – ныне стандартизованные как CTA-608 и CTA-708 Ассоциацией потребительских технологий (Consumer Technology Association) – это встроенные вещательные captions. В отличие от WebVTT и IMSC, это не отдельные sidecar-файлы; данные captions несутся внутри самого видеопотока. CEA-608 – формат аналоговой эпохи (бело-на-чёрном заглавными); CEA-708 – цифровой наследник со шрифтами, цветами и позиционированием, и он обязан нести данные 608 для обратной совместимости («608 over 708»). Для OTT они важны в основном тогда, когда исходник пришёл из вещательной цепочки с уже вшитыми captions, и для устройств гостиной, которые их ждут.
Эта разница в переносе влечёт упаковочное следствие, которое стоит отметить. WebVTT и IMSC – sidecar-текст: отдельные файлы, на которые ссылается манифест, как и демуксированное аудио, поэтому они почти ничего не стоят и легко добавляются по языку. CEA-608/708 – встроенные: вварены в видеосегменты, то есть едут автоматически, но их нельзя добавить, заменить или стилизовать, не трогая видео. В HLS это видно в самой спецификации: рендишн CLOSED-CAPTIONS, объявленный через EXT-X-MEDIA, не имеет URI – именно потому, что captions живут в видеосегментах, тогда как рендишн SUBTITLES URI имеет, указывая на собственные sidecar-файлы (RFC 8216 §4.3.4.1).
| Формат текста | Перенос | HLS? | DASH? | Стилизация | Лучше для |
|---|---|---|---|---|---|
| WebVTT (wvtt) | Sidecar fMP4 / текст | Да | Да | Базовая | Прагматичный веб-дефолт; легко по языку |
| IMSC 1.1 / TTML (stpp) | Sidecar fMP4 | Да | Да | Богатая (текст + image) | Broadcast-стилизация, премиум-каталоги |
| CEA-608 (CTA-608) | Встроено в видео | Да | Ограниченно | Минимальная | Исходник из вещания; часть ТВ-устройств |
| CEA-708 (CTA-708) | Встроено в видео | Да | Ограниченно | Умеренная | Captions из вещания, ТВ-устройства США |
Таблица 2. Форматы субтитров и captions с колонками охвата HLS/DASH. Sidecar-форматы (WebVTT, IMSC) добавляют дорожки по языку дёшево; встроенные (608/708) едут внутри видео и не добавляются и не стилизуются без повторного касания видео.
Треки доступности: описанное видео и forced narrative
Ещё два типа дорожек завершают набор, и про оба легко забыть, пока на пробел не укажет зритель – или регулятор.
Описанное видео (audio description, тифлокомментирование) – отдельная аудиодорожка, проговаривающая важное визуальное действие в паузах диалога: «она кладёт записку ему в карман пальто». Она служит слепым и слабовидящим зрителям и сама является полноценным аудиорендишном – ещё одна причина, чтобы аудио-дорожку было дёшево расширять. В HLS её помечают значением атрибута CHARACTERISTICS public.accessibility.describes-video; в DASH она несёт дескриптор Accessibility или Role, отмечающий её как трек описания.
Forced-narrative субтитры («forced narrative», «forced subtitles») – небольшой особый трек субтитров, появляющийся автоматически у всех, независимо от настройки субтитров, чтобы перевести диалог или надписи, которые основная аудитория не понимает: инопланетная речь в англоязычном фильме, иноязычный знак, письмо на экране. Это не полный трек субтитров, а те несколько строк, которые обязаны быть читаемы всегда. HLS помечает их FORCED=YES в теге EXT-X-MEDIA (RFC 8216 §4.3.4.1). Пропустите их – и англоязычный зритель англоязычного фильма просто не поймёт сцену, где двое говорят по-русски: пробел в качестве, рождающий тикеты в поддержку и плохие отзывы.
HLS выражает намерение доступности дорожки через тот же атрибут CHARACTERISTICS, используя Uniform Type Identifiers от Apple: public.accessibility.transcribes-spoken-dialog (этот трек субтитров на деле captions), public.accessibility.describes-music-and-sound (включает не-речевые звуки – сигнал SDH) и public.easy-to-read (отредактировано для лёгкого чтения). Это не украшение: так меню доступности плеера понимает, что предложить «English (CC)», а не просто «English», и так платформа доказывает, что отдала captions, а не просто субтитры.
Как дорожки едут в манифесте
Всё это – языки аудио, языки субтитров, captions, треки доступности – связывается в манифесте, небольшом текстовом индексе, который плеер читает первым. Связка проще, чем кажется: манифест объявляет каждую не-видео дорожку членом именованной группы, а затем говорит каждой видеоступени, какие группы идут с ней.
В HLS мастер-плейлист перечисляет каждую альтернативную дорожку тегом EXT-X-MEDIA с её TYPE (AUDIO, SUBTITLES или CLOSED-CAPTIONS), GROUP-ID, LANGUAGE, человекочитаемым NAME и флагами выбора (DEFAULT, AUTOSELECT, FORCED). Каждый видеовариант (EXT-X-STREAM-INF, RFC 8216 §4.3.4.2) затем называет группы аудио и субтитров, с которыми он сочетается. Урезанный пример:
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud",NAME="English",LANGUAGE="en",DEFAULT=YES,AUTOSELECT=YES,URI="audio/en.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud",NAME="Español",LANGUAGE="es",AUTOSELECT=YES,URI="audio/es.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud",NAME="English (described)",LANGUAGE="en",CHARACTERISTICS="public.accessibility.describes-video",URI="audio/en-ad.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="sub",NAME="English (CC)",LANGUAGE="en",CHARACTERISTICS="public.accessibility.transcribes-spoken-dialog,public.accessibility.describes-music-and-sound",AUTOSELECT=YES,URI="subs/en.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=6000000,CODECS="avc1.640028,mp4a.40.2",AUDIO="aud",SUBTITLES="sub"
video/1080p.m3u8Одна видеострока, рядом несколько дорожек, все делят одно видео. В DASH та же идея использует отдельные AdaptationSet – по одному на тип медиа и язык – каждый с атрибутом @lang и, для доступности, дескриптором Role или Accessibility (схема ролей urn:mpeg:dash:role:2011, ISO/IEC 23009-1):
<AdaptationSet contentType="audio" lang="es">
<Representation id="aud-es" bandwidth="128000" codecs="mp4a.40.2"/>
</AdaptationSet>
<AdaptationSet contentType="text" lang="en">
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="caption"/>
<Accessibility schemeIdUri="urn:tva:metadata:cs:AudioPurposeCS:2007" value="2"/>
<Representation id="sub-en" mimeType="application/mp4" codecs="stpp"/>
</AdaptationSet>Форма одинакова в обоих форматах: видео один раз, каждая другая дорожка объявлена рядом и выбирается по языку и роли. Это манифестный слой того же принципа «упаковать один раз», что управляет и самим видео – см. упаковку: CMAF, HLS и DASH из одного mezzanine – и поэтому отвязка аудио и текста от видео не просто дешевле, а именно так, как ждут стандарты. По байтовым деталям форматов – как WebVTT и IMSC обёрнуты в fMP4, как разрешаются дескрипторы DASH – см. наш разбор в разделе Video Streaming: WebVTT, IMSC и мультиаудио.
Закон, который не пропустить: CVAA и WCAG
Часть этих дорожек – необязательная продуктовая отделка. Другая – юридические обязательства, и грань между ними стоит знать до запуска, а не после жалобы.
В США Закон о коммуникациях и видеодоступности XXI века 2010 года (CVAA) поручил Федеральной комиссии по связи (FCC) требовать captions на интернет-видео. Имплементирующее правило, 47 CFR §79.4, конкретно: полнометражное видео, доставляемое через интернет, обязано нести closed captions, если оно показывалось на ТВ США с captions, с поэтапным вводом по типам контента – записанное и неотредактированное с 30 сентября 2012, live и near-live с 30 марта 2013, записанное-но-отредактированное-для-интернета с 30 сентября 2013. Практический тест прост: если единица контента шла на ТВ США с captions, вашей онлайн-версии они тоже нужны, и исключения уже, чем для традиционного вещания. Контент, никогда не шедший на ТВ, под §79.4 не подпадает – но это узкое исключение, а не общий пропуск, и оно не отменяет отдельных ожиданий доступности ниже.
Там, где платформа следует Руководству по доступности веб-контента (WCAG) 2.1 – эталонному стандарту, на который ссылаются многие законы о доступности и закупочные правила, – дорожки этой статьи регулируют три критерия успеха: 1.2.2 Captions (Prerecorded) уровня A требует captions для записанного аудио; 1.2.4 Captions (Live) уровня AA распространяет это на live-контент; и 1.2.5 Audio Description (Prerecorded) уровня AA требует трек описанного видео для записанного видео. Платформа, заявляющая соответствие WCAG 2.1 AA, тем самым берёт на себя captions на всём и audio description на записанном видео – поэтому треки описанного видео и SDH выше для многих операторов не опциональны. Полный юридический разбор – в Блоке 8: см. закон о доступности для стриминга: captions, audio description, WCAG. Для этой статьи вывод таков: у вашего плана дорожек есть измерение соответствия, и дешевле всего удовлетворить его, когда вы впервые проектируете дорожки, – а не после запуска.
Частая ошибка: мукс аудио в видео
Самая дорогая ошибка в этой статье – та, которую команда не видит, потому что поток работает: мукс аудио в видеосегменты. Выходит одноязычный пилот, аудио вварено в каждый видеокусок, и всё играет отлично. Потом каталог идёт в мир. Добавить испанский – значит заново переупаковать всю видео-лесенку с испанским аудио внутри; добавить ещё восемь языков – ещё восемь полных копий картинки. Хранение и egress растут с множителем – до ~9× на десятиязычной единице, как показала арифметика выше, – и никто не связывает растущий счёт с упаковочным выбором первого дня. Лечение – демуксировать аудио с самого начала, даже для одноязычного запуска, чтобы второй язык был маленькой новой дорожкой, а не вторым каталогом.
С ней едут три родственные ошибки. Первая – субтитры под видом captions: отдать только переводные субтитры и заявить доступность, когда глухим и слабослышащим нужны SDH-captions с не-речевым звуком – а в США §79.4 может требовать их по закону. Вторая – пропуск forced-narrative субтитров, из-за чего зритель англоязычного фильма не прочтёт сцену, где говорят на другом языке; маленькая дорожка с непропорциональным влиянием на воспринимаемое качество. Третья – отсутствие цели по громкости на весь каталог, из-за чего единицы приходят на той громкости, что была в их мастерах, и зритель крутит громкость между каждой программой. Каждую ошибку дёшево предотвратить в плане дорожек и дорого исправлять на живом каталоге.
Где здесь Фора Софт
Не-видео дорожки – место, где тихо решаются языковой охват каталога, соответствие закону о доступности и хранение на единицу контента, и инженерить их так, чтобы они масштабировались – демуксированное аудио, добавляющее язык без пересохранения картинки; стратегия captions, удовлетворяющая CVAA и WCAG; цель по громкости на весь каталог, принуждаемая на ingest; правильно подключённые в каждом манифесте forced-narrative и описанное видео – это разница между каталогом, который дёшево интернационализируется, и тем, который удваивает счёт с каждым дубляжом. Фора Софт с 2005 года делает ПО для видеостриминга, OTT/Интернет-ТВ, e-learning, телемедицины и видеонаблюдения – более 250 реализованных проектов для 400+ клиентов, – и эта работа сосредоточена ровно на таком инженеринге масштаба и соответствия: проектировании упаковочных и манифестных воркфлоу, где один мастер обслуживает каждый язык и каждую нужду доступности. Когда медиакомпании нужна платформа, чьи дорожки аудио, субтитров и доступности выдержат реальную мультитерриториальную аудиторию, этот инженеринг дорожек и манифеста – то, что мы приносим.
Главное
- Пакет многодорожечный: одна видео-лесенка плюс отдельные аудио, субтитры, captions и треки доступности.
- Демуксируйте аудио от видео, иначе каждый язык пересохраняет всю картинку – до ~9× на десяти языках.
- AAC-LC stereo – универсальный аудиопол; surround (E-AC-3) и прочее предлагайте альтернативами.
- Субтитры переводят диалог; captions/SDH добавляют не-речевой звук для глухих и слабослышащих.
- WebVTT и IMSC – дешёвый sidecar-текст; CEA-608/708 встроены в видео.
- В США §79.4 требует captions на интернет-видео, шедшем на ТВ с ними; WCAG 2.1 AA добавляет audio description.