Convertitore di sottotitoli da riga di comando open source


Risposte:


26

Puoi provare FFmpeg (ottimo strumento!):

$ ffmpeg -i file.srt file.vtt

9

Oneliner molto semplice ed efficace che utilizzo per convertire i sottotitoli:

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

basta cambiare asse in srtbase alle proprie esigenze.


7

Sottotitoli perl coltellino svizzero (scorrere fino alla fine della pagina).

Qui puoi trovare più opzioni.

Inoltre, mplayer / mencoder ha alcune opzioni dumpXXXsub, che potrebbero funzionare. Non l'ho mai provato, ma leggendo l'uomo, dovrebbe funzionare. Esempio:

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

In effetti questo è utile, purtroppo sebbene siano supportati solo tre formati diversi; .srt, .sub, .smi.
Johnas

Ho controllato Mplayer e Mencoder. Tuttavia, non è riuscito a farlo funzionare. E supporta solo SRT, SMI, SUB e JACO. Un buon consiglio però, grazie.
Johnas

Funziona bene, grazie! Qui: pastebin.com/T6DM9xbq è il mio convertitore basato su questo con rilevamento framerate usando mplayer
Lukasz Frankowski

3

Il programma open source Subtitle Edit ha un convertitore da riga di comando ed è disponibile sia per Windows che per Linux.

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

Esempio 1 : SubtitleEdit /convert sub1.srt sami
Risultato : converte sub1.srt in sub1.sub in formato SAMI

Esempio 2 : SubtitleEdit /convert *.srt adobeencore
Risultato : converte tutti i file .srt in formato Adobe Encore

Per Linux la riga di comando deve essere leggermente più lunga ...

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

... ma potrebbe essere facilmente racchiuso in una sceneggiatura.


La GUI funziona, ma ho ricevuto un errore durante l'esecuzione dalla riga di comando. Ho dovuto installare libmono-winformsper far funzionare la GUI (come indicato nel README) ... Forse c'è qualcosa in più che è necessario per il funzionamento della CLI ... ho ricevuto un AttachConsole...errore. usando Ubuntu 10.04 ...
Peter.O

Questo sembra essere stato risolto nella versione 3.2.3 - almeno su Ubuntu
Johanz il

1
@Johanz: grazie. La versione 3.2.3 funziona. Ha convertito a .assin SubRip (.srt) ... Solo una cosa che ho notato: produce \r\nterminazioni di linea (CRLF), anche quando la fine della linea di origine è \n... ma che raramente sarebbe un problema e si risolve facilmente con sedse è necessario.
Peter

+1 poiché si tratta di un convertitore davvero valido e di un'applicazione open source. E ha un'interfaccia di linea cmd.
user10607

1

Cosa vuoi convertire esattamente? Se si trova tra i formati di sottotitoli, dipende dai formati di cui stai parlando. Quelli che sono basati su bitmap richiedono l'OCR per la conversione in formato testo e generalmente richiedono sempre l'input dell'utente per confermare l'accuratezza dell'OCR

Se si tratta di tutti i formati di testo, potrebbero essere utili Jubler o Aegisub


Sottotitoli di testo semplici. SRT, STL, SUB, PAC. Avanti e indietro.
Johnas

@johnas - la mia risposta è stata aggiornata con un paio di possibilità
Shevek

Grazie Shevek, ma nessuna delle opzioni precedenti era operativa. Anche se sarebbero stati perfetti se avessi potuto usare la GUI.
Johnas

1

Ho scoperto che ad alcuni lettori (ad esempio il lettore video di Google Drive) non piace il .srt generato da:

ffmpeg -i subtitles.ass <blah>.srt

o:

SubtitleEdit /convert subtitles.ass subrip

ma:

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

... ha fatto il trucco per me.


0

rinominare il nome del file usando sed

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

se si desidera eliminare il .srtfile dopo la conversione, aggiungere semplicemente un comando rm in seguito.

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

1
Cosa succede se il nome del file è big.assassins.assured(più l'estensione)? Lo sednominerai bigassinsured. Senza sede senza questo difetto: "${i%.ass}.srt".
Kamil Maciorowski il

0
#!/bin/bash

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

se vuoi convertire più file usando questo programma in for loop.


E se Ffmpeg si interrompe?
174140

ffmpeg è una libreria multimediale open source.
Manoj kumar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.