Перейти к основному содержимому
SubtitleMatrix

Извлечь субтитры из видео

Медиа на входеСубтитры внутри видео

При первом запуске скачивается движок субтитров — около 31 МБ с этого сайта; дальше его кэширует браузер. Само видео не покидает эту вкладку.

Страница берёт видеофайл и отдаёт дорожки субтитров, которые уже лежат внутри, — по файлу на дорожку, с именем по языку дорожки. Файл Matroska с английской дорожкой SDH, китайской дорожкой и растровой дорожкой PGS выходит тремя файлами: .srt, ещё один .srt и .sup. Контейнер демуксируется, а не перекодируется, поэтому текстовая дорожка копируется теми байтами, которые уже были в файле, — не перепечатывается с экрана и не перетаймируется.

Работа идёт во вкладке: видео читает сборка ffmpeg, скомпилированная в WebAssembly и отдаваемая этим сайтом, и единственный сетевой запрос — за самим движком, около 31 МБ при первом использовании, после чего браузер держит его в кэше. Видео никуда не отправляется, и это то же правило, что на остальных страницах сайта: материал, который нельзя выносить с машины, остаётся на ней.

Частые вопросы

Какие видеоформаты можно перетащить на эту страницу?

MKV, MP4, M4V, AVI, MOV, TS, WebM, WMV, FLV, MPG и OGV. Список — это на самом деле список демуксеров, которые есть в поставляемой сборке ffmpeg, а не список видеокодеков: что бы ни лежало внутри контейнера, дорожки субтитров остаются потоком одного и того же рода. Файл с необычным расширением, но обычным телом Matroska обычно всё равно открывается, потому что демуксер читает заголовок, а не имя; фрагментированная или недокачанная загрузка часто не открывается, потому что в ней нет индекса, по которому можно идти.

Покидает ли видео мой компьютер, пока его читают?

Нет. Единственная загрузка — сам движок ffmpeg, около 31 МБ, отдаваемый с этого сайта и кэшируемый браузером после первого раза. Ваше видео монтируется в виртуальную файловую систему движка во вкладке и читается оттуда; оно никогда не попадает в тело запроса. Это можно проверить на панели Network: пока файл обрабатывается, запроса с ним нет. Именно из-за этого свойства страница и существует: большинство извлекателей сначала загружают файл, а материал под юридическим или медицинским запретом загружать нельзя.

Почему я получил .sup, а не .srt?

Потому что эта дорожка хранится картинками, а не текстом. Потоки PGS (кодек hdmv_pgs_subtitle) — это последовательность изображений, и честное извлечение потока изображений даёт поток изображений: .sup, ровно то, что ждут плееры и редакторы субтитров. Превратить его в текст значит распознать буквы на каждой картинке, а это отдельная страница с вопросом о языке и шагом вычитки. Извлекатель никогда не выдумывает текст, которого не читал.

Что инструмент делает с дорожкой, у формата которой нет отдельного файла?

Он перекодирует эту дорожку в SRT и помечает результат как перекодированный. Частый случай — mov_text, кодек субтитров, который живёт внутри MP4: у него нет собственного файлового формата, поэтому копирование потока наружу дало бы байты, которые ничем не открыть. Перекодирование не является без потерь: оформление и позиционирование, которые мог нести mov_text, не выживают, и карточка результата перечисляет это как потерю, а не выдаёт файл за нетронутую копию содержимого контейнера.

Как называются выходные файлы, если дорожек несколько?

По имени самого видео и языковому коду дорожки: файл documentary.mkv с английской дорожкой даёт documentary.eng.srt. Когда две дорожки делят один язык — обычная английская и английская SDH, что встречается часто, — вторая становится documentary.eng-2.srt, а не перезаписывает первую. Дорожка без языковой метки получает номер потока, чтобы её тоже можно было отличить. Если файлов больше одного, страница предлагает их одним zip-архивом, потому что браузеры не дают странице запустить несколько загрузок сразу.

Почему первый запуск длится дольше второго?

Первый запуск скачивает движок ffmpeg, около 31 МБ. Строка прогресса покрывает эту загрузку, а затем само извлечение. Браузер кэширует движок, поэтому следующие запуски на той же странице начинаются почти сразу; то же верно после перезагрузки, если кэш не очищали. Движок отдаётся четырьмя частями, потому что площадка хостинга не принимает отдельные файлы больше 25 МиБ, и страница собирает их в памяти перед стартом — эта сборка входит в то же ожидание первого раза.

Можно отменить запуск, который идёт слишком долго?

Да. Кнопка отмены останавливает текущее извлечение и завершает worker, который им занят, поэтому большой файл не продолжает занимать ядро после того, как вы решили не ждать. Отмена — не ошибка: элемент возвращается в состояние, из которого можно повторить, а следующий запуск поднимает новый worker. Частичный результат не предлагается к скачиванию, потому что наполовину записанный файл субтитров, который выглядит целым, хуже, чем никакого файла.

Похожие инструменты