Forum général.général Aide sous-titres vidéo

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
23
sept.
2025

Bonjour,

J'ai un fichier de sous-titres .srt pour une vidéo.

Malheureusement, celui-ci est mal formaté.

Il me faudrait effacer toutes les lignes vides entre le code temporel et le texte.

Par exemple :

00:02:51,459 --> 00:02:53,770

Christian trouvera ton tire-bouchon on

00:02:53,770 --> 00:02:53,780
Christian trouvera ton tire-bouchon on

00:02:53,780 --> 00:02:55,210
Christian trouvera ton tire-bouchon on
peut toujours trouver un tire-bouchon eh

00:02:55,210 --> 00:02:55,220
peut toujours trouver un tire-bouchon eh

Devrait être :

00:02:51,459 --> 00:02:53,770
Christian trouvera ton tire-bouchon on

00:02:53,770 --> 00:02:53,780
Christian trouvera ton tire-bouchon on

00:02:53,780 --> 00:02:55,210
Christian trouvera ton tire-bouchon on
peut toujours trouver un tire-bouchon eh

00:02:55,210 --> 00:02:55,220
peut toujours trouver un tire-bouchon eh

Je dois donc effacer la ligne vide du début entre

00:02:51,459 --> 00:02:53,770

et

Christian trouvera ton tire-bouchon on

Comme le film dure une heure et qu'il y a souvent cette erreur, comment faire ? Je ne souhaite pas le faire à la main.

Merci des conseils.

  • # je ferai en perl

    Posté par  . Évalué à 3 (+0/-0). Dernière modification le 23 septembre 2025 à 15:43.

    #!/usr/bin/perl
    
    use strict;
    
    while(my $line = <>){
       if( $line =~ /-->/) {
          print $line;
          while( ($line = <>) =~ /^\s*$/ ){}
        }
      print $line;
    }
    
    }

    a noter que j'ai fais du explicite, on pourrait virer les $line et se contenter de $_, et si y'a plusieurs lignes vide je les manges toute

    while(my $line = <>){
       if( $line =~ /-->/) {
          print $line;
          $line = <>;
          if ( $line =~ /\w/) {
            print $line;
          }
          $line = <>;
        }
      print $line;
    }

    n'en mange qu'une seule :)

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

    • [^] # Re: je ferai en perl

      Posté par  . Évalué à 2 (+0/-0). Dernière modification le 23 septembre 2025 à 17:24.

      J'ai l'impression que ton truc supprime toutes les lignes vides ce qui n'est pas le résultat escompté.

      Un simple sed ou awk devrait suffire, exemple (il ya sûrement beaucoup plus concis) :

      sed -i '/^$/d;/\,[0-9]\{3\}/i\\n' fichier.srt

      la première commande /^$/d supprime toutes les lignes vides
      la seconde /\,[0-9]\{3\}/i\\n insère un saut de ligne après le motif une virgule suivie de trois chiffres

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.