У меня есть несколько MKV-файлов с субтитрами Advanced SubStation Alpha (ASS). Субтитры являются «переключаемыми», поэтому они, вероятно, не «записываются» тогда.

Моя цель - каким-то образом - увеличить размер шрифта этих субтитров. Лучше всего было бы напрямую изменить свойства потока субтитров (если это вообще имеет смысл?) внутри файла MKV. (Настройки медиаплеера относительно размера шрифта не помогут; я буду воспроизводить эти файлы MKV на своем телевизоре.) Позже это упростит мою транскодирование HandBrake, поскольку эта программа не может импортировать любой другой формат субтитров, кроме SRT. Однако он может использовать субтитры ASS, если они встроены в файл для транскодирования. Вот почему самый простой способ - сохранить - напрямую изменить - субтитры в MKV.

Но я даже не знаю, с чего начать все это ...

1 ответ1

1

Ну, я сделал это. Это не оптимальный путь, но я спешил. Ниже описано, как я решил свою проблему.

(Также не забудьте установить mkvtoolnix. Пользователи Linux могут просто извлечь пакет из своего репозитория, а пользователи Windows могут попробовать загрузить mkvtoolnix с официального сайта.)

  1. Запустите mkvinfo <mkv filename> и получите индекс субтитров.
  2. Запустите mkvextract tracks <mkv filename> <subtitle track index>:<mkv filename>.ass
  3. Замените размеры шрифта выведенного <mkv filename>.ass текстовым редактором.
  4. Запустите mkvmerge -o <new mkv filename> <mkv filename> --language 0:eng <mkv filename>.ass
  5. Перекодируйте <new mkv filename> с помощью HandBrake и смотрите транскодированный файл по телевизору.

Пример с файлом dn-01.mkv:

  1. Запустите mkvinfo dn-01.mkv и программа выведет некоторую информацию о файле mkv. Ищите дорожку субтитров и соответствующий номер. Обязательно используйте число в скобках, так как оно используется для mkvextract . В моем случае информация о дорожке субтитров была:

    | + A track
    |  + Track number: 3 (track ID for mkvmerge & mkvextract: 2)
    |  + Track UID: 476285904
    |  + Track type: subtitles
    |  + Enabled: 1
    |  + Default flag: 1
    |  + Forced flag: 0
    |  + Lacing flag: 0
    |  + MinCache: 0
    |  + Timecode scale: 1
    |  + Max BlockAddition ID: 0
    |  + Codec ID: S_TEXT/ASS
    |  + Codec decode all: 1
    |  + CodecPrivate, length 2057
    |  + Language: eng
    
  2. Запустите mkvextract tracks dn-01.mkv 2:dn-01.ass и подождите.

  3. Откройте dn-01.ass с помощью текстового редактора и измените размеры шрифта под заголовком V4+ Styles в начале файла. (Не забудьте изменить размер всех стилей, а не только по Default .) Пример:

    Style: Default,Marker Felt,27,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,0,2,10,10,10,0
    Style: SIGN,Sand,36,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,0
    (more)
    

    ... становится ...

    Style: Default,Marker Felt,42,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,0,2,10,10,10,0
    Style: SIGN,Sand,54,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,0
    (more)
    

    Сохраните файл после внесения изменений.

  4. Запустите mkvmerge -o dn-01-modified.mkv dn-01.mkv --language 0:eng dn-01.ass и подождите. После того, как процесс будет завершен, у вновь созданного dn-01-modified.mkv будет дополнительная дорожка субтитров, которая должна быть больше по размеру рендеринга, чем исходная дорожка субтитров.

Теперь вы сделали! Я хотел посмотреть видео по телевизору, хотя. Если вы тоже хотите это сделать или воспроизвести на другом устройстве, то:

  1. Перекодируйте dn-01-modified.mkv с помощью некоторой программы транскодирования видео, используя соответствующие настройки для целевого устройства. (Не забудьте указать программе, что она записывает только что добавленную дорожку субтитров в само видео, если целевое устройство не может воспроизводить субтитры ASS!) В моем случае я использовал HandBrakeCLI с настройками ниже для использования на 60-дюймовом телевизоре Samsung. Обратите внимание, что я горю в субтитрах, так как мой телевизор не любит субтитры ASS.

    HandBrakeCLI -e x264 -q 20.0 -a 1 -E ffac3 -B 160 -6 dpl2 -R Auto -D 0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mkv --loose-anamorphic --modulus 2 -m --x264-preset veryfast --h264-profile main --h264-level 4.0 --subtitle "2" --subtitle-burned 2 -i dn-01-modified.mkv -o dn-01-modified-burned.mkv
    
  2. Воспроизведите транскодированный файл dn-01-modified-burned.mkv на целевом устройстве.


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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .