Conversor de legenda de linha de comando de código aberto


Respostas:


26

Você pode experimentar o FFmpeg (ótima ferramenta!):

$ ffmpeg -i file.srt file.vtt

9

oneliner muito simples e eficaz que eu uso para converter legendas:

for i in *.ass ; do ffmpeg -i "$i" "$i.srt" ; done

basta mudar asse de srtacordo com suas necessidades.


7

Legendas perl swiss army knife (role para o final da página).

Aqui você pode encontrar mais opções.

Além disso, o mplayer / mencoder possui algumas opções de dumpXXXsub, que podem funcionar. Eu nunca tentei isso, mas lendo o homem, deve funcionar. Exemplo:

-dumpmpsub (MPlayer only)
              Convert the given subtitle (specified with the -sub option) to MPlayer's subtitle format, MPsub.  Creates a dump.mpsub file in the current directory.

Na verdade, isso é útil, infelizmente, embora apenas três formatos diferentes sejam suportados; .srt, .sub, .smi.
— 9788 Johnas

Eu verifiquei o Mplayer e o Mencoder. Ainda não funcionou. E suporta apenas SRT, SMI, SUB e JACO. Uma boa sugestão, obrigado.
— Johnas 9/03/10

Funciona bem, obrigado! Aqui: pastebin.com/T6DM9xbq é o meu conversor com base nisso, com detecção de taxa de quadros usando o mplayer
— 12767 Lukasz Frankowski

3

O programa de código aberto Subtitle Edit possui um conversor de linha de comando e está disponível para Windows e Linux.

Sintaxe :SubtitleEdit /convert "pattern" "name-of-format-without-spaces"

Exemplo 1 : SubtitleEdit /convert sub1.srt sami
Resultado : converterá sub1.srt em sub1.sub no formato SAMI

Exemplo 2 : SubtitleEdit /convert *.srt adobeencore
Resultado : converterá todos os arquivos .srt para o formato Adobe Encore

Para Linux, a linha de comando precisa ser um pouco mais longa…

Sintaxe :mono SubtitleEdit.exe /convert "pattern" "name-of-format-without-spaces"

... mas pode ser facilmente envolvido em um script.


A GUI funciona, mas recebi um erro ao executar a partir da linha de comando ... Eu precisava instalar libmono-winformsa GUI para funcionar (conforme declarado no README) ... Talvez exista algo extra necessário para a CLI funcionar ... Eu recebo um AttachConsole...erro. usando Ubuntu 10.04 ...
— Peter.O

Isso parece estar corrigido na versão 3.2.3 - pelo menos no Ubuntu
— Johanz 15-12 de Johanz

11
@ Johanz: Obrigado. A versão 3.2.3 funciona. Ele converteu um .asspara SubRip (.srt) ... Apenas uma coisa que eu não percebi: produz \r\nterminações de linha (CRLF), mesmo quando o final da linha de origem é \n... mas isso raramente seria um problema e é facilmente corrigido com sedif precisa ser.
— precisa saber é o seguinte

+1, pois esse é um conversor muito bom e um aplicativo de código aberto. E tem uma interface de linha cmd.
— user10607

1

O que você deseja converter exatamente? Se estiver entre os formatos de legenda, depende de quais formatos você está falando. Aqueles que são baseados em bitmap exigirão que o OCR seja convertido em formato de texto e geralmente sempre exijam entrada do usuário para confirmar a precisão do OCR

Se é todos os formatos de texto, em seguida, Jubler ou Aegisub pode ser de uso


Legendas de texto simples. SRT, STL, SUB, PAC. Vai e volta.
— Johnas 9/03/10

@johnas - minha resposta atualizado com um par de possibilidades
— Shevek

Obrigado Shevek, mas nenhuma das opções acima estava operacional na linha de comando. Embora eles teriam sido perfeitos se eu pudesse usar a GUI.
— Johnas 9/03/10

1

Descobri que alguns players (por exemplo, o player de vídeo do Google Drive) não gostam do .srt gerado a partir de:

ffmpeg -i subtitles.ass <blah>.srt

ou:

SubtitleEdit /convert subtitles.ass subrip

mas:

ffmpeg -i subtitles.ass -codec:s text subtitles.srt

... fez o truque para mim.


0

renomeie o nome do arquivo usando sed

for i in ./*.ass ; do ffmpeg -i "$i" "$( echo "$i"|sed 's/\.ass//g' ).srt" ; done

se você deseja excluir o .srtarquivo após a conversão, basta adicionar um comando rm posteriormente.

for i in ./*.ass ; do ffmpeg -i "$i" "$( echo "$i"|sed 's/\.ass//g' ).srt"  &&  rm -f "$i"  ; done

11
E se o nome do arquivo for big.assassins.assured(mais a extensão)? Seu sednome será bigassinsured. Sem sede sem esta falha: "${i%.ass}.srt".
— Kamil Maciorowski 24/07

0
#!/bin/bash

file="*.srt"                     # Find file
ffmpeg -i "$file" "${file%.*}.vtt"   # Convert file  
rm "$file"                         # Remove file .srt from your dir

se você deseja converter mais arquivos usando este programa no loop for.


E se Ffmpeg abortar?
— 174140

O ffmpeg é uma biblioteca multimídia de código aberto.
— Manoj kumar
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.