Aqui está meu processo

Aqui está meu processo

Existe uma maneira de converter legendas dvdsub (baseadas em imagens) para srt? por exemplo, com mencoder ou ffmpeg combinado com tesseract?

Estou procurando algo baseado em linha de comando e estou bem em ter que passar por algumas passagens.

Estou menos interessado em ferramentas baseadas em GUI.

Responder1

Você provavelmente já encontrou uma solução, mas como este foi o primeiro resultado da pesquisa para 'ffmpeg ocr dvdsub srt', aqui está uma ferramenta que eu uso.

https://github.com/ruediger/VobSub2SRT

Não é perfeito e pode exigir alguma edição.

Eu estava tentando encontrar um recurso no ffmpeg que fizesse isso melhor do que o meu método, mas encontrei isso e me lembrei da toca do coelho que tive que descer, então espero que isso ajude alguém.

Aqui está meu processo

Para extrair dvdsub de um .mkv

Usando mkvextract de mkvtoolnix-cli

mkvextract video.mkv tracks 2:video.idx

  • arg 1 - O nome do arquivo de vídeo contendo dvdsub
  • arg 2 - O tipo de extração
  • arg 3 - [Stream # contendo dvdsub]:[Nome do arquivo desejado dos arquivos extraídos].idx

Meu exemplo teria produzido um arquivo video.idx e um arquivo video.sub

Gerando subrip de arquivos .idx e .sub

Usando vobsub2srt

vobsub2srt usa tesseract e descobri que usar o modo legado do tesseract funciona melhor.

vobsub2srt --tesseract-oem 0 video

  • arg 1 - Modo Tesseract Engine ( tesseract --help-oempara modos)
  • arg 2 - Modo Legado
  • arg 3 - Nome do arquivo deAMBOS.idx e .subSEMextensão

Meu exemplo teria produzido video.srt

Inspecione e edite o arquivo subrip

Erros que experimentei

  • '|' em vez de 'I', o modo legado do tesseract não parece cometer esse erro com frequência.
  • ` em vez de '
  • Espaçamento, quando uma linha começa com '-', pode não haver espaço entre '-' e a primeira palavra.
  • Ausente ' & "
  • 'Eu' ou '|' em vez de '[', o legado não parece cometer esse erro com frequência.

Edite-o

Se você não estiver familiarizado com arquivos subrip, eles podem simplesmente ser lançados em um editor de texto.

grep, vim e sed são seus amigos.

A maioria dos erros do modo legado pode ser facilmente ignorada.

Substituindo dvdsub por subrip(srt)

Usando 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 e 2 - Entrada #1 - Arquivo de vídeo contendo dvdsub
  • arg 3 e 4 - Entrada # 2 - Arquivo Subrip
  • arg 5 - Codec usado para todos os streams
  • arg 6 - Copia todos os streams (somente vídeo e áudio são copiados)
  • arg 7 - Codec de legenda (substitui o argumento 5 para legendas)
  • arg 8 - Seleciona subrip como codec de legenda (pode ser redundante, mas seguro>desculpe)
  • arg 9 e 10 - Mapeia o fluxo de vídeo da 1ª entrada para o 1º fluxo na saída
  • arg 11 e 12 - Mapeia o fluxo de áudio da 1ª entrada para o 2º fluxo na saída
  • arg 13 e 14 - Mapeia o fluxo de legendas da 2ª entrada para o 3º fluxo na saída
  • arg 15 - Nome do arquivo de saída

E pronto, espero que não haja limite de caracteres aqui.

informação relacionada