Можно ли преобразовать субтитры dvdsub в srt через командную строку?

Есть ли способ конвертировать субтитры dvdsub (на основе изображений) в SRT? например с mencoder или ffmpeg в сочетании с тессерактом?

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

Я менее заинтересован в инструментах на основе графического интерфейса.

1 ответ

Вероятно, вы уже нашли решение, но поскольку это был первый результат поиска по запросу «ffmpeg ocr dvdsub srt», я использую вот такой инструмент.

https://github.com/ruediger/VobSub2SRT

Он не идеален и может потребовать некоторого редактирования.

Я пытался найти в ffmpeg функцию, которая делает это лучше, чем мой метод, но я нашел это и вспомнил о кроличьей норе, в которую мне пришлось залезть, так что я надеюсь, что это кому-то поможет.

Вот мой процесс

Для извлечения DVDSub из .mkv

Использование mkvextract из mkvtoolnix-cli


  • аргумент 1 — имя файла видео, содержащего dvdsub.
  • arg 2 — тип извлечения
  • аргумент 3 - [Поток #, содержащий dvdsub]:[Желаемое имя извлеченных файлов].idx

В моем примере были бы созданы файлы video.idx и video.sub.

Создание субрипа из файлов .idx и .sub

Использование vobsub2srt

vobsub2srt использует tesseract, и я обнаружил, что использование устаревшего режима tesseract работает лучше всего.


  • аргумент 1 — режим движка Tesseract (для режимов)
  • аргумент 2 – устаревший режим
  • arg 3 – имя файла ОБА .idx и .sub БЕЗ расширения.

Мой пример создал бы video.srt

Проверьте и отредактируйте субрип-файл

Ошибки, с которыми я столкнулся

  • '|' вместо «I» устаревший режим Тессеракта, похоже, не часто допускает эту ошибку.
  • `вместо`
  • Интервал: если строка начинается с «-», между «-» и первым словом может не быть пробела.
  • Отсутствующий ' & "
  • «Я» или «|» вместо '[' наследие, похоже, не часто допускает эту ошибку.

Редактировать это

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

grep, vim и sed — ваши друзья.

Однако большинство ошибок устаревшего режима можно легко игнорировать.

Замена dvdsub на subrip(srt)

Использование ffmpeg


  • аргументы 1 и 2 — вход № 1 — видеофайл, содержащий dvdsub
  • аргументы 3 и 4 — вход № 2 — файл Subrip
  • arg 5 — кодек, используемый для всего потока
  • аргумент 6 — копирует все потоки (копируются только видео и аудио)
  • arg 7 — кодек субтитров (переопределяет аргумент 5 для субтитров)
  • arg 8 — выбирает субрип в качестве кодека субтитров (может быть избыточно, но безопасно> извините)
  • arg 9 и 10 — отображает видеопоток с 1-го входа на 1-й поток на выходе.
  • аргументы 11 и 12 — отображает аудиопоток с 1-го входа на 2-й поток на выходе.
  • аргументы 13 и 14 — отображает поток субтитров со 2-го входа на 3-й поток вывода.
  • аргумент 15 — имя выходного файла

И готово, надеюсь, здесь нет ограничения на количество символов.

Другие вопросы по тегам