Star Trek Continues: ffmeg dvdsub: перекрывающиеся субтитры

Star Trek Continues: ffmeg dvdsub: перекрывающиеся субтитры

Итак, я скачал бесплатное приложение, созданное фанатами.Звездный путь продолжаетсяBlue-Ray ISO дляЭпизоды 1-3и я пытаюсь преобразовать FHD 1920x1080 в SD 960x540, чтобы можно было смотреть на моем телефоне:

ffmpeg -canvas_size 960x540 \
-i /media/STC_VOL1_BR/BDMV/STREAM/00000.m2ts \
-map_metadata -1 \
-c:v libx264 -map 0:0 -strict -2 -r 24 -s 960x540 \
-c:a libmp3lame -map 0:1 -b:a 384K \
-metadata:s:s:0 language=EN -c:s dvdsub -map 0:2 \
/media/Videos/Star\ Trek\ Continues/S01E01\ Pilgrim\ Of\ Eternity.mkv

но после нескольких секунд просмотра преобразованного mkv субтитры становятся такими:

  • нечитаемо из-за перекрытия
  • немного велики (не проблема)
  • смещено вправо и вниз экрана

Скриншот VLC

Полный вывод ffmpeg здесь

Что я делаю не так?

Примечание 1:Я имел дело только с srtсубтитрами и знаю, что DVD-Sub — это изображения, поэтому я подумал, что этот canvas_sizeпараметр может быть полезен, но это не имеет значения.
Заметка 2:Да, это не совсем вопрос по ОС Ubuntu, но вот по темевидео.seне получаюлюбое внимание, даже с вознаграждениемпоэтому попробуйте здесь, если кто-то занимается конвертацией видео и столкнулся с такой же ситуацией.

решение1

Техническисамый чистыйсмотреть с этими субтитрами было бы так:

  1. Извлечь субтитры
  2. Преобразуйте их в текст с помощью вашего любимого приложения OCR.
  3. Внимательно просмотрите и отредактируйте текст.
  4. Запишите их обратно в медиапоток в выбранном вами размере, цвете, ориентации и формате.

Это большая и трудоемкая работа, котораяЯ лично предпринимал в прошломно, вероятно,переборв этом случае.

Theлучшевариант - просто добавить опцию FFmpeg -fix_sub_duration(помещеннуюдовходной файл) и это исправит двойные субтитры, как я проиллюстрировал ниже, и сделает субтитры легко читаемыми:

введите описание изображения здесь

Подробную информацию об этой -fix_sub_durationопции можно найти на страницах руководства FFmpeg-all, но я взял на себя смелость процитировать эти данные здесь:

-fix_sub_duration

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

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

Вы заметите, что этопервыйиз дополнительных опций субтитров,второйбудучи -canvas_sizeтем, что вы уже использовали...

Связанный контент