Convertisseur de sous-titres en ligne de commande open source

Réponses:

26

Vous pouvez essayer FFmpeg (excellent outil!):

$ ffmpeg -i file.srt file.vtt
SebMa
la source
9

Oneliner très simple et efficace que j'utilise pour convertir les sous-titres:

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

il suffit de changer asset srtselon vos besoins.

RASG
la source
7

Sous-titres perl swiss army knife (faites défiler jusqu'à la fin de la page).

Ici vous pouvez trouver plus d'options.

De plus, mplayer / mencoder a quelques options dumpXXXsub, qui pourraient fonctionner. Je n'ai jamais essayé ça, mais en lisant l'homme, ça devrait marcher. Exemple:

-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.
Ensoleillé
la source
En effet, cela est pratique, malheureusement, seuls trois formats différents sont pris en charge; .srt, .sub, .smi.
Johnas
J'ai vérifié le Mplayer et le Mencoder. Je n'ai pas réussi à le faire fonctionner. Et il ne prend en charge que SRT, SMI, SUB et JACO. Une bonne suggestion cependant, merci.
Johnas
Fonctionne bien, merci! Ici: pastebin.com/T6DM9xbq est mon convertisseur basé sur cela avec une détection de fréquence d'images en utilisant mplayer
Lukasz Frankowski
3

Le programme open source Subtitle Edit a un convertisseur de ligne de commande et est disponible pour Windows et Linux.

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

Exemple 1 : SubtitleEdit /convert sub1.srt sami
Résultat : convertira sub1.srt en sub1.sub au format SAMI

Exemple 2 : SubtitleEdit /convert *.srt adobeencore
Résultat : convertira tous les fichiers .srt au format Adobe Encore

Pour Linux la ligne de commande doit être un peu plus ...

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

… Mais pourrait facilement être enveloppé dans un script.

Johanz
la source
L'interface graphique fonctionne, mais j'ai eu une erreur lors de l'exécution à partir de la ligne de commande ... J'ai dû installer libmono-winformspour que l'interface graphique fonctionne (comme indiqué dans le fichier README) ... Peut-être qu'il y a quelque chose de plus qui est nécessaire pour que la CLI fonctionne ... je reçois une AttachConsole...erreur. en utilisant Ubuntu 10.04 ...
Peter.O
Cela semble être corrigé dans la version 3.2.3 - au moins sur Ubuntu
Johanz
1
@Johanz: Merci. La version 3.2.3 fonctionne. Il a converti un .assSubRip (.srt) ... Juste une chose que j'ai notée: il produit des \r\nfins de ligne (CRLF), même lorsque la fin de ligne source est \n... mais ce serait rarement un problème et est facilement corrigé sedsi besoin d'être.
Peter.O
+1 car c'est un très bon convertisseur et une application open source. Et il a une interface de ligne cmd.
user10607
1

Que voulez-vous convertir exactement? Si c'est entre les formats de sous-titres, cela dépend des formats dont vous parlez. Ceux qui sont basés sur le bitmap nécessiteront une conversion OCR au format texte et nécessitent généralement une entrée utilisateur pour confirmer l'exactitude de l'OCR

S'il s'agit de tous les formats de texte, Jubler ou Aegisub peuvent être utiles

Shevek
la source
Sous-titres de texte simples. SRT, STL, SUB, PAC. D'avant en arrière.
Johnas
@johnas - ma réponse mise à jour avec quelques possibilités
Shevek
Merci Shevek, mais rien de ce qui précède n'était opérationnel en ligne de commande. Bien qu'ils auraient été parfaits si j'avais pu utiliser l'interface graphique.
Johnas
1

J'ai constaté que certains lecteurs (par exemple, le lecteur vidéo Google Drive) n'aiment pas le .srt généré à partir de:

ffmpeg -i subtitles.ass <blah>.srt

ou:

SubtitleEdit /convert subtitles.ass subrip

mais:

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

... a fait l'affaire pour moi.

Jim Sung
la source
0

renommer le nom du fichier à l'aide de sed

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

si vous souhaitez supprimer le .srtfichier après la conversion, ajoutez simplement une commande rm par la suite.

for i in ./*.ass ; do ffmpeg -i "$i" "$( echo "$i"|sed 's/\.ass//g' ).srt"  &&  rm -f "$i"  ; done
mdaliyan
la source
1
Que faire si le nom du fichier est big.assassins.assured(plus l'extension)? Votre sednommez-le bigassinsured. Sans sedet sans cette faille: "${i%.ass}.srt".
Kamil Maciorowski
0
#!/bin/bash

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

si vous voulez convertir plus de fichiers en utilisant ce programme dans la boucle for.

Manoj Kumar
la source
Et si Ffmpeg avortait?
174140
ffmpeg est une bibliothèque multimédia open source.
Manoj kumar