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

20

Existe algum código aberto, linha de comando, conversores de legenda - preferencialmente para Linux?

Johnas
fonte

Respostas:

26

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

$ ffmpeg -i file.srt file.vtt
SebMa
fonte
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.

RASG
fonte
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.
Ensolarado
fonte
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.

Johanz
fonte
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

Shevek
fonte
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.

Jim Sung
fonte
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
mdaliyan
fonte
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.

Manoj kumar
fonte
E se Ffmpeg abortar?
174140
O ffmpeg é uma biblioteca multimídia de código aberto.
Manoj kumar