Смотрим сериалы правильно: как сделать двойные субтитры для любого видео

Смотрим сериалы правильно: как сделать двойные субтитры для любого видео

Кратко: двойные субтитры — это круто. Делать их достаточно просто: две команды в терминале + пара кликов в программке. Статья получилась объёмной, потому что я хотел как можно подробнее описать все нюансы. Приятного чтения!

Кажется, что может быть проще, чем смотреть сериалы — купил подписку на нетфликс или загуглил “смотреть сериал онлайн без регистрации”. Оказывается, и здесь есть тонкости.

Когда я открыл для себя способ, описанный в этой статье, я понял, что это идеальный для меня вариант, и что отныне я буду пользоваться именно им.

Сначала разберёмся, почему не стоит смотреть сериалы в русской озвучке.

Смотреть сериалы нужно в оригинале

Почему не стоит смотреть сериалы в русской озвучке:

  • Вы банально упускаете возможность улучшать свой английский
  • Как бы ни старались актёры дубляжа, у них всегда будет получаться другой сериал
  • Непереводимые вещи (их больше, чем кажется)
  • Из-за различий языков фразы могут звучать совсем по-разному, например, пара слов на английском может превратиться в огромное предложение на русском
  • Голоса дубляжа банально всегда одни и те же (хотя актёры и стараются поменять их под конкретного персонажа)
  • Если озвучка идёт поверх оригинальной дорожки (а это самый частый случай), то становится вообще ничего не слышно, кроме голосов, а иногда даже их сложно разбирать, приходится напрягаться, чтобы разобрать речь

Да, это всё очевидно, но как смотреть сериал, если ты не очень хорошо знаешь язык? Ответ — субтитры. Но какие выбрать, русские или английские? С русскими субтитрами язык будет прокачиваться хуже. Если же выбрать английские, то возникает вопрос: как понимать, всё, что происходит в сериале? Не сидеть же со словарём — теряется и темп повествования, и вообще желание смотреть сериал.

На помощь приходят…

Двойные субтитры

img

img

Красота! Но где такие достать? Есть сайты, которые предлагают контент с такими субтитрами, но некоторые из них стоят денег, и понятно, что там есть далеко не все сериалы и не в лучшем качестве. Поэтому здесь я описываю способ самодельного изготовления таких субтитров.

Плюсы и минусы самодельных двойных субтитров

Плюсы:

  • Двойные субтитры можно сделать практически для любого сериала/фильма (я ещё не встречал популярный контент, где нет rus/eng субтитров)
  • Они помогают учить язык
  • Они улучшают ощущения от просмотра сериала (см. выше)
  • Они будут работать в любом плеере. Я, например, использую VLC

Минусы:

  • Не всем подойдет мой способ. Я описываю шаги алгоритма, которым пользуюсь сам, поэтому понадобится базовое знание Linux. Но при желании в интернете можно найти, как сделать всё то же самое под Windows: DualSub (забегая вперёд), например, есть и под винду, остаётся только научиться вытаскивать дорожки с субтитрами
  • Сериал придётся скачивать. Но с другой стороны, это хорошо: будет бескомпромиссное качество, гарантированно не будет никакой рекламы от пиратских озвучек
  • После скачивания очередного сезона придётся тратить 2-3 минуты на создание субтитров (не больше)
  • Если герои говорят слишком быстро и rus/eng субтитры рассинхронизированы, то при склейке через DualSub может получиться очень большой кусок текста, аж на весь экран. Но это случается довольно редко, зависит от сериала и субтитров.

Как сделать двойные субтитры самому

Немного теории

Для хранения субтитров используется формат SRT. Данные хранятся в виде текста.

Вот так, например, хранятся английские субтитры с картинки выше:

340
00:22:54,415 --> 00:22:57,250
I'm guessing that
your current choice in lodging

341
00:22:57,333 --> 00:23:00,712
is a reflection of frugality
rather than necessity.

Допустим мы скачали сериал, но никаких .srt файлов в папке не видим. Но плеер-то их где-то находит!

Оказывается, в видеофайлы формата MKV можно запихивать несколько дорожек с разными озвучками и разными субтитрами. Есть утилиты (см. ниже) для того, чтобы вытащить субтитры в отдельные файлы, которые мы скормим программе DualSub. Она склеит субтитры в единый SRT-файл, синхронизирует их по времени, и даже раскрасит в нужные цвета.

img

Итоговый файл srt будет называться так же, как и .mkv файл, поэтому любой плеер поймёт, что субтитры надо брать именно из этого файла. В VLC такие субтитры приоритетнее, чем встроенные в mkv файл, поэтому даже выбирать ничего не придётся.

Существуют плееры, которые умеют воспроизводить сразу две дорожки субтитров из разных файлов, но мне не удалось найти рабочий плеер под Linux для этого. Для VLC под Windows есть костыльный плагин, который, судя по всему, работает. Но тогда пропадает кроссплатформенность решения.

Что потребуется

  • Установленный пакет mkvtoolnix (в Ubuntu это делается с помощью sudo apt update && sudo apt install mkvtoolnix)
  • Установленная программа DualSub
  • Скачанный сериал с субтитрами для обоих языков
  • Два .py файла для облегчения процесса вытаскивания дорожек. Для удобства можно кидать их в папку с сериалом, чтобы запускать их через ./info.py и ./extract.py .

Сам алгоритм

Извлечение субтитров

Итак, у вас есть скачанный сериал. Если вы видите .srt файлы, разложенные по папочкам Rus и Eng, пропускайте этот шаг. Но такое бывает крайне редко, поэтому здесь я описываю, как извлечь нужные дорожки субтитров из mkv файлов.

Для начала надо понять, какие дорожки нам нужны. Их может быть очень много, но нам нужно всего две.

Полезно знать, что бывают разные типы субтитров: из “Full SDH” и “Forced” надо выбирать первое, потому что “Forced” — субтитры для просмотра без звука, там будут приколы вроде “♫ Играет музыка ♫”.

Итак, смотрим, какие дорожки субтитров есть в файле: (откуда взять info.py, см. выше)

./info.py 1.mkv

Получаем список всех дорожек mkv файла (причем как аудиодорожки, так и дорожки с субтитрами):

img

Ищем тут дорожки с Track type: subtitles, запоминаем номера двух нужных нам.

Как я уже писал, нужны “Full”, а не “Forced” дорожки, поэтому в этом примере я запоминаю цифры 4 и 6. Заметим, что утилита нам подсказывает, что для извлечения дорожек номер нужен на 1 меньше, чем Track number.

Будем надеяться, что дорожки во всех сериях сезона одинаковые. Если это не так — поймём это позже по размеру файла и повторим процесс с info.py. Но обычно всё норм и дорожки не путаются в пределах одного сезона.

Чтобы извлечь дорожки из всех mkv файлов сразу, запускаем второй скрипт:

./extract.py 4 6 *.mkv

Здесь первое число — номер дорожки с русскими субтитрами, второе — с английскими, далее идёт список видеофайлов.

Получаем файлы 1_rus.srt и 1_eng.srt , 2_rus.srt и 2_eng.srt и т.д.

Ура! Осталась самая простая часть.

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

Запускаем DualSub, перетаскиваем в левое окошко русские субтитры (сразу для всех серий), в правое — английские. Удобнее всего в файловом менеджере искать субтитры по _rus и _eng, чтобы выделить их все сразу:

image-20210703124853634

Поскольку это первый запуск программы, нужно всё настроить.

upd. Ниже я перепутал право и лево. Если хотите результат как на скрине выше, то левые = верхние субтитры должны быть английскими и белыми, правые = нижние — русскими и синими. Впрочем, не существует единственно правильного варианта, просто обращаю внимание на то, что если делать так, как написано ниже, то получится зеркально тому, как на скриншотах.

  • Указываем цвет для левых субтитров, для этого нажимаем на кнопку палитры. Я использую цвет с кодом 9797fc (чтобы поставить такой же, нужно перейти во вкладку RGB и вписать этот код в соответствующее поле).

  • Жмём на кнопку Output folder и выбираем папку, в которой лежат .mkv файлы, чтобы объединённые и раскрашенные субтитры падали туда.

  • В разделе Output ставим UTF-8 в Encoding , чтобы не было проблем с кодировкой.

Я пытался играться с настройками синхронизации, но стандартные настройки меня в итоге устроили больше всего.

image-20210703135924383

Жмём на Merge и радуемся жизни! Как я уже говорил, любой плеер увидит субтитры abc.srt, когда вы откроете abc.mkv, поэтому всё будет работать само. К слову, в настройках VLC можно поставить предпочитаемый язык озвучки. Тогда для просмотра серии нужно будет просто открыть видеофайл, нужные субтитры и озвучка выберутся автоматически.

Теперь стоит проверить, что каждый srt файл весит несколько десятков килобайт. Если это не так, скорее всего, дорожки поменялись местами от серии к серии, поэтому придётся еще раз посмотреть через info.py дорожки для проблемных файлов и запустить для них ./extract n k problematic.mkv c новыми номерами дорожек.

Временные субтитры можно стереть через rm *_eng.srt *_rus.srt

Ура, мы сделали двойные субтитры и можем наслаждаться контентом!