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

Объединить два субтитра в один

Текст и оформлениеОбъединение двух дорожек в двуязычный файл
Или вставьте текст субтитров
Или вставьте текст второго файла

Параметры

Два субтитра редко совпадают реплика в реплику, и это решение определяет, что происходит везде, где они расходятся. Там, где реплика одного файла пересекается с репликой другого, они считаются одним моментом и идут вместе, а пересечение решает, как долго результат остаётся на экране. Остальное — этот выбор. «Сохранить оба файла» добавляет каждую несовпавшую реплику отдельной строкой, так что ни одно слово ни из одного входа не теряется, — но тайминг второго файла не сохраняется, потому что несовпавшая реплика всё равно должна куда-то лечь на таймлайн первого. «Сохранить таймлайн первого файла» делает наоборот: реплики первого файла сохраняют ровно свои начала и концы, ничего нового не вставляется, а реплики второго, ни с чем не совпавшие, отбрасываются. Отчёт после запуска всегда называет их число.

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

В какой частоте кадров считается тайминг. На страницах форматов это то, что нужно MicroDVD: он хранит время в номерах кадров. На страницах частоты кадров это частота, по которой файл был рассчитан, — версия, для которой делались субтитры, — а второе поле страницы принимает частоту видео, с которым вы будете их использовать. Обычные значения: 23,976, 24, 25, 29,97, 30, 50, 59,94 и 60. Ошибка сдвигает весь таймлайн, а на страницах частоты кадров — на коэффициент, а не на фиксированную величину.

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

Что делать с репликами без пары, решает первая настройка: union, значение по умолчанию, переносит каждую отдельной репликой и сохраняет весь текст, а primary оставляет тайминг первого файла и отбрасывает такие реплики в отчёт. Вторая настройка — раскладка: две строки по умолчанию, первая дорожка сверху, или одна строка с вашим разделителем, у которого значение по умолчанию пробел. Каждое поле принимает десять форматов, MicroDVD читается с общей частотой кадров, файлы можно бросать пачкой, и ничего не отправляется на сервер.

Примеры

Два файла совпадают, слияние в две строки

Вход

First file:
1
00:00:01,000 --> 00:00:03,000
Good morning.

2
00:00:05,000 --> 00:00:07,000
How are you?


Second file:
1
00:00:01,000 --> 00:00:03,000
早上好。

2
00:00:05,000 --> 00:00:07,000
你好吗?

Выход

1
00:00:01,000 --> 00:00:03,000
Good morning.
早上好。

2
00:00:05,000 --> 00:00:07,000
How are you?
你好吗?

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

Те же два файла, склейка в одну строку

Вход

First file:
1
00:00:01,000 --> 00:00:03,000
Good morning.

2
00:00:05,000 --> 00:00:07,000
How are you?


Second file:
1
00:00:01,000 --> 00:00:03,000
早上好。

2
00:00:05,000 --> 00:00:07,000
你好吗?

Выход

1
00:00:01,000 --> 00:00:03,000
Good morning. / 早上好。

2
00:00:05,000 --> 00:00:07,000
How are you? / 你好吗?

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

Реплика второго файла, которой ничего не соответствует

Вход

First file:
1
00:00:01,000 --> 00:00:03,000
Good morning.

2
00:00:05,000 --> 00:00:07,000
How are you?


Second file:
1
00:00:01,000 --> 00:00:03,000
早上好。

2
00:00:03,000 --> 00:00:04,500
(敲门声)

Выход

1
00:00:01,000 --> 00:00:03,000
Good morning.
早上好。

2
00:00:03,000 --> 00:00:04,500
(敲门声)

3
00:00:05,000 --> 00:00:07,000
How are you?

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

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

В двух файлах разное число реплик. Какой файл главнее?

Ни один, и в этом весь смысл сопоставления по времени. Реплика из одного файла получает пару в другом, если их интервалы пересекаются, независимо от номеров: перевод, разбивший длинную фразу на две короткие, всё равно прикрепляется к своей строке. Пара достаётся первой из двух половин, вторая ни с чем не пересекается и затем либо переносится отдельной репликой, либо отбрасывается — в зависимости от первой настройки. Отчёт после запуска говорит, что именно произошло и сколько реплик это затронуло.

Изменит ли объединение с переводом тайминг моего оригинала?

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

Можно ли так добавить субтитры на втором языке, а не только слить два файла?

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

Нужно ли загружать оба файла на сервер?

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

Что, если два файла в разных форматах субтитров?

Это работает и встречается часто: WebVTT из вебинара и SRT от переводчика. Каждое поле читается тем, что в нём лежит, а результат записывается в формате первого файла — поэтому поля и подписаны. Следствие, о котором стоит знать, — оформление: если первый файл ASS со стилями, а второй обычный SRT, объединённый файл будет ASS, и текст второго войдёт в него с оформлением первого, а не своим; число затронутых реплик перечислено в отчёте.

Какой язык окажется в верхней строке?

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

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