Скрипт для синхронизации субтитров

Тем, кто готовят релизы сериалов, знакома ситуация, когда HDTV пришёл c одними таймингами, WEB-DL с другими, BDRip с третьими. Хорошо, если достаточно сдвинуть все тайминги на фиксированное время, хуже, когда между фрагментами эпизода отбивки разной длины (как в тех же ТБВ и Дискавери), совсем паршиво, когда рассинхрон пропорционально возрастает. Первое лечится легко прямо на ноте, для второго удобнее брать сторонний софт типа Aegisub, удобного решения третьего не встречал. Кроме того, однократная корректировка плоха тем, что если захотелось потом что-то поправить в переводе, приходится либо дублировать изменения, либо пересинхронизировать.

Поэтому в своих релизах мы уже некоторое время используем небольшой скрипт на python 3, позволяющий проводить все эти изменения в батч-режиме. Мы решили, что он может пригодится и другим, поэтому выложили его сюда: https://github.com/thenooniensoong/subshift

Использование простое: для каждого преобразуемого файла готовится отдельный конфиг, в первой строчке которого указывается исходный файл, во второй результирующий, на следующих – номера ключевых титров и нужный для них тайминг через пробел или табуляцию. В качестве ключевых титров удобно брать первые титры после отбивок, всяких заставок и т.п.

После обработки тайминги ключевых титров будут взяты из конфига, всех остальных – пропорционально откорректированы.

Например, для преобразования 14 серии Discovery из AMZN в NF использовался такой конфиг:

StarTrek.Discovery.S01E14.WEBRip.TeamNotDead.srt
Star.Trek.Discovery.S01E14.The.War.Without.The.War.Within.1080p.NF.WEBRip.DD5.1.x264-NTb.srt
1 00:00:12,011
182 0:10:05.605
184 0:11:43.828
370 0:22:50.452
795 00:47:29,930
796 0:47:55.331
Написал NoonienSoong 11 февраля 2018, 12:56 Техподдержка 11 комментариев

Комментарии

Вот только не понял: если загружен оригинал в нотабеноид и переводится, могу ли я синхронизировать его на сайте этим скриптом?

qwerjar 18.02.18 в 18:29 · # ·
0

скрытые комментарии (1 шт.)

Нет. Это скрипт не для сайта, а для постобработки.

NoonienSoong 19.02.18 в 09:29 · # ·
0

Судя по описанию, штука очень нужная. Ещё бы это было понятно простым людям (не программистам), было бы вообще круто. Python 3, я так понимаю, – это язык программирования, скрипт – это программа на нём написанная. А то, куда этот скрипт засовывать, что там с ним делать, в какой конфиг – это уже фиг разберёшь.

DimDimCh 19.02.18 в 15:22 · # ·
0

скрытые комментарии (1 шт.)

Видимо, нужно поставить интерпретатор пайтона и запускать через него.

Alrs 19.02.18 в 20:37 · # ·
0

Да ну, люди. А я то думал. Все давно сделано в Subtitle Edit.
«Синхронизация по точкам с помощью других субтитров». Зачем мучаться? Если кому-то что-то нужно помочь, пишите.

qwerjar 20.02.18 в 00:11 · # ·
0

скрытые комментарии (6 шт.)

Ключевые слова – «в батч-режиме».

maxibeginner 20.02.18 в 21:15 · # ·
0

И? Зачем доступ к интернету, когда есть программа?)

qwerjar 20.02.18 в 22:30 · # ·
0

Это юмор скорее всего. Ещё одно непонятное слово из той же оперы))
А SE рулит, я им тоже пользуюсь, но не весь функционал пока изучил.

DimDimCh 20.02.18 в 22:38 · # ·
0

Кому-то нравится при каждой правке перевода тыкать мышкой в оконном интерфейсе, кому-то удобнее просто запустить скрипт.

maxibeginner 20.02.18 в 22:49 · # ·
2

Мне не только нравится, мне еще понятней просто. Зачем записывать отличия субтитров, когда там сразу высвечиваются оба? Сравнил, пару раз кликнул, и никаких путаниц с 00:03:24,49878938 и т.д.
Но, спасибо за альтернативный вариант и вы просто большой молодец, что додумались. Может, вскоре додумаетесь, как творить тоже самое, только на сайте.

qwerjar 20.02.18 в 22:57 · # ·
0

Еще раз: сделали перевод, синхронизировали под два релиза. Через некоторое время вычистили перевод (мало ли, выяснилось, что фраза, брошенная пару серий назад, имеет чуть другой смысл, или просто накатил приступ перфекционизма). В случае скрипта достаточно просто еще раз его запустить, вся работа по синхронизации уже была проделана и сохранена в конфиге.

maxibeginner 20.02.18 в 23:19 · # ·
3