25

У меня есть MKV-файл хорошего качества с несколькими вариантами субтитров. Я хочу добавить дополнительный файл субтитров в список. Я использую OSX.

Некоторые поиски в Интернете привели меня к использованию видео конвертеров и в основном перекодировали фильм в новый файл. Это кажется мне излишним. Плюс я могу потерять предыдущие субтитры и немного качества изображения по пути.

3 ответа3

36

Удаление субтитров:

mkvmerge -o output.mkv input.mkv -S # remove all subtitle tracks
mkvmerge -o output.mkv input.mkv -s 3,4 # remove tracks 3 and 4
mkvmerge -o output.mkv input.mkv -s '!3' # remove all subtitle tracks except 3
mkvmerge -i input.mkv # show track numbers

Добавление субтитров:

mkvmerge -o output.mkv input.mkv subs.srt
mkvmerge -o output.mkv input.mkv --language 0:ger --track-name 0:German subs.srt

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

mkvextract tracks input.mkv 3:subs.srt
for f in *.mkv; do
  sub=$(mkvmerge -i "$f" | awk '$4=="subtitles"{print;exit}')
  [[ $sub ]] || continue
  [[ $sub =~ S_TEXT/ASS ]] && ext=ass || ext=srt
  track=$(awk -F '[ :]' '{print $3}' <<< "$sub")
  mkvextract tracks "$f" "$track:${f%mkv}$ext"
done

mkvmerge и mkvextract могут быть установлены с помощью brew install mkvtoolnix .

4

Существует два основных способа отображения субтитров. Вы можете кодировать пиксели в самом видео. Это называется "хардсаббинг". Преимущество здесь в простоте для видеоплеера, это просто видеопоток. Недостатки в том, что вам пришлось перекодировать видео, что занимает много времени и приводит к некоторой потере точности. Если вы получите лучший перевод, ну, это пиксели в видео. И вы можете иметь только один язык.

Что несколько лучше, так это "мягкая субтитровка", которая должна иметь текстовый файл где-то отдельно от видеопотока. Существует много разных форматов файлов субтитров, но в их основе все они имеют «текст, время запуска, время удаления» в своей основе. Некоторые из них имеют дополнительные функции, такие как цвета и ориентация на экране. Преимуществом этого является то, что у вас может быть несколько языков (например, DVD, у вас есть несколько доступных языков), и вы можете исправить опечатки и тому подобное в файле. И если вам не нужны субтитры, просто выключите их.

Софтсубы могут быть как отдельными файлами - большинство проигрывателей будут автоматически искать субтитры с тем же именем (с другим расширением), что и основное видео. Или определенные форматы контейнерных файлов (например, MKV) могут включать их в себя. Проверьте MKVtoolnix (есть порт Mac) для файловых инструментов MKV. Это должно позволить вам встраивать softtsubs без перекодирования.

Обратите внимание, что не все плееры могут поддерживать все форматы. Мой опыт показывает, что у XBMC есть проблемы с файлами SSA, но намного проще файлы SRT. VLC будет проигрывать что угодно, если это поддерживается на вашей платформе.

0

Я понимаю, что это старый вопрос, и user495470 был принят с 2013 года, но поскольку часть вопроса касается добавления субтитров к файлам, я хотел добавить это новое дополнение.

По сути, мне нужно было объединить десятки .ass субтитров в файлы MKV с одинаковыми именами, поэтому выполнение этой команды за раз не приводило к ее сокращению. Поэтому я создал этот простой Bash-скрипт, который будет искать в текущем каталоге, из которого запускается, файлы .ass а затем объединять их, как и ожидалось.

find -E . -maxdepth 1 -type f -iregex '.*\.(ASS|SRT)$' |\
  while read FILEPATH
  do
    DIRNAME=$(dirname "${FILEPATH}");
    BASENAME=$(basename "${FILEPATH}");
    FILENAME="${BASENAME%.*}";
    EXTENSION="${BASENAME##*.}"
    mkvmerge -o "/Users/jake/${FILENAME}"-NEW.mkv "${FILENAME}".mp4 --language 0:eng --track-name 0:English "${FILENAME}"."${EXTENSION}"
  done

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

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