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.