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

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

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

Я ищу что-то на основе командной строки и не против пройти несколько этапов.

Мне меньше нравятся инструменты с графическим интерфейсом.

решение1

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

https://github.com/ruediger/VobSub2SRT

Он не идеален и, возможно, требует некоторого редактирования.

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

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

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

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

mkvextract video.mkv tracks 2:video.idx

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

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

Создание subrip из файлов .idx и .sub

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

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

vobsub2srt --tesseract-oem 0 video

  • arg 1 - Режим движка Tesseract ( tesseract --help-oemдля режимов)
  • arg 2 - Устаревший режим
  • arg 3 - Имя файлаОБА.idx и .subБЕЗрасширение

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

Проверить и отредактировать файл subrip

Ошибки, которые я совершил

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

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

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

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

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

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

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

ffmpeg -i video.mkv -i video.srt -c copy -c:s subrip -map 0:v -map 0:a -map 1 final-video.mkv

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

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

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