Расширения Chrome не добавляют дублирующие субтитры на Netflix просто так — эта функция отсутствует в самой платформе. Вместо этого они работают, наблюдая за данными субтитров, создавая их второй наложенный слой на плеере и синхронизируя с воспроизведением. Это нелегкая задача, так как Netflix использует одностраничное приложение (SPA), где плеер постоянно меняется.
Технические детали решения
Расширения, такие как Language Reactor, Trancy и Funlingo, делают дублирующие субтитры кажущимися простыми. Однако разработчики сталкиваются с проблемами, когда обычная команда video.appendChild(track) на Netflix не работает, поскольку плеер контролирует воспроизведение и может игнорировать изменения. Вместо этого придумали альтернативный подход — захват этих субтитров, их перевод и создание собственного наложения.
Проблемы с контекстом расширений
Первоначально разработчики могут столкнуться с изолированной средой скриптов содержания Chrome, ограничивая доступ к JavaScript на странице. Многие расширения внедряют дополнительные теги скриптов, что позволяет взаимодействовать с основным кодом страницы. Это важный момент, который определяет, почему расширения для субтитров выглядят как полноценные системы, а не простые добавления.
Форматы субтитров
Расширения должны уметь обрабатывать различные форматы файлов субтитров — WebVTT, TTML или SRT. Примером внутренней модели может служить код, который описывает начало и конец субтитров с текстом и языком. Простая форма может выглядеть следующим образом: interface SubtitleCue { startMs: number; endMs: number; text: string; language?: string; }. Это формирует базу для других функций, таких как синхронизация воспроизведения.
Практическое значение для разработчиков
Для разработчиков и стартапов, работающих с потоковым контентом, внимательно изучение того, как возникают дублирующие субтитры, может открыть новые возможности для языкового обучения и многоязычного контента. Поскольку инструменты для получения дублирующих субтитров становятся все более популярными, это важный момент для разработки продуктов, ориентированных на международную аудиторию.
Следующий шаг в развитии этих расширений — улучшение алгоритмов синхронизации и управления данными, что позволит сделать процесс более эффективным и менее зависимым от изменений на сторонних платформах.