Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
extraire_sous-titres_video [Le 26/08/2015, 20:29] – [Script d'extraction des sous-titres d'une vidéo TS en SRT] albanmartelextraire_sous-titres_video [Le 11/09/2022, 12:17] (Version actuelle) – Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) moths-art
Ligne 1: Ligne 1:
-{{tag>Subtitles TS mkvextract SRT vidéo}}+{{tag>vidéo}} {{tag>ffmpeg}} {{tag>srt}} {{tag>Sous-titrage}}{{tag>vobsub2srt}} {{tag>mkvtoolnix}}
  
-====== Script d'extraction des sous-titres d'une vidéo TS  en SRT======+====== Extraction des sous-titres d'une vidéo ======
  
-Script bash permettant de convertir un groupe de fichiers vidéos de même extension contenu dans un même répertoire et d'extraire ses sous-titre en fichier srt.+Scripts bash permettant de convertir plusieurs pistes de sous-titre vobsub d'une vidéo enregistrer sur la TNT par exemple et de les convertir en sous-titres texte .srt.
  
-Inspiré du tutoriel : [[tutoriel:vobsub_srt|Conversion de sous-titres VobSub en SRT]] 
  
 +<note> L'extraction de sous-titres d'une vidéo multicanal demande d'identifier les canaux sous-titres puis d'effectuer une reconnaissance de caractère pour les transformer en fichiers srt (texte) moins volumineux et plus faciles à inclure dans un fichier vidéo mkv Matroska.
 +</note>
  
 +=====  Algorithme =====
 +
 +Inspiré de l'algorithme  : [[tutoriel:vobsub_srt|Conversion de sous-titres VobSub en SRT]]
 +
 +<note warning>Les 3 dernières étapes peuvent être réalisées avec vobsub2srt</note>
 +
 +  * Repérer les canaux de sous-titres d'un fichier vidéo avec ffmpeg
 +  * extraire sous-titres vobsub dans une vidéos mastroika
 +  * extraire les sous-titres des vidéos mastroïka avec mkvextract
 +  * convertir fichier .sub et .idx en tiff;
 +  * reconnaissance de caractère de chaque tiff avec cunéiform
 +  * création d'un fichier srt
 +
 +====  Script bash correspondant à l'algorithme ====
 +
 +[[https://raw.githubusercontent.com/albanmartel/dvsub2srt.bash/main/dvsub2srt.bash | dvsub2srt.bash]]
 +
 +<file bash>
 +# !/bin/bash
 +# OUTPUT-COLORING
 +red=$( tput setaf 1 )
 +green=$( tput setaf 2 )
 +NC=$( tput sgr0 )      # or perhaps: tput sgr0
 +#NC=$( tput setaf 0 )      # or perhaps: tput sgr0
 +
 +# Dépendances : ffmpeg,  mkvtoolnix, vobsub2srt
 +# Signale quel programme l'on exécute
 +# puis la composition du répertoire où le script s'exécute
 +echo -e "programme pour extraire des canaux de sous-titres d'une vidéo\n
 +Composition du répertoire courant :\n
 +$(ls)"
 +
 +# Invite de commande pour entrer le fichier vidéo à traiter
 +echo -n "Entrer le fichier vidéo choisi :";
 +read film_a_traiter;
 +
 +# Message pour informer l'utilisateur de son choix
 +echo -e "Le fichier vidéo choisi est : \n $film_a_traiter"
 +
 +# Exemple film_a_traiter="RetourVersLeFutur2.mp4"
 +# film_a_traiter="RetourVersLeFutur2.mp4"
 +
 +# soustitres_array= ("4|fra" "5|fra")
 +soustitres_array=($(ffprobe $film_a_traiter -v quiet -show_entries stream=index:stream_tags=language -select_streams s -of compact=p=0:nk=1))
 +
 +# metadata_sub="-map 0:4 -metadata:s:s:1 language=fra -map 0:5 -metadata:s:s:2 language=fra"
 +metadata_sub=$(for (( c=0; c<${#soustitres_array[@]}; c++)); do  echo -map 0:$(echo ${soustitres_array[$c]} | cut -d "|" -f1) -metadata:s:s:$(($c + 1)) language=$(echo ${soustitres_array[$c]} | cut -d "|" -f2) ; done)
 +
 +# command1="ffmpeg -i RetourVersLeFutur2.mp4 -map 0:4 -metadata:s:s:1 language=fra -map 0:5 -metadata:s:s:2 language=fra -c:s dvdsub sous_titres_RetourVersLeFutur2.mp4.mk"
 +command1=$(echo "ffmpeg -i $film_a_traiter $metadata_sub -c:s dvdsub sous_titres_$film_a_traiter.mkv")
 +
 +# Execution commande n°1 $command1
 +$command1
 +
 +# vobsub_piste="0:0_ 1:1_"
 +vobsub_piste=$(for (( c=0; c<${#soustitres_array[@]}; c++));do echo $c:$c"_"; done)
 +
 +#command2="mkvextract tracks sous_titres_RetourVersLeFutur2.mp4.mkv -c ISO8859-1 0:0_ 1:1_"
 +command2=$(echo "mkvextract tracks sous_titres_$film_a_traiter.mkv -c ISO8859-1 $vobsub_piste")
 +
 +# Execution commande n°2 $command2
 +$command2
 +
 +# Exécution Roc des fichiers de sous-titres
 +#vobsub2srt 0_; vobsub2srt 1_;"
 +for (( c=0; c<${#soustitres_array[@]}; c++));
 +do
 + vobsub2srt $c"_";
 +done
 +exit 0;
 +</file>
 +
 +====  Ancien Exemple de séquence bash correspondant à l'algorithme ====
 +
 +<file bash>
 +ffmpeg -i data0003.ts 2>&1 | grep subtitle
 +mkdir data0003
 +ffmpeg -i data0003.ts -map 0:4 -map 0:5 -vn -an -scodec dvdsub data0003.mkv
 +mkvextract tracks "data0003.mkv" -c ISO8859-1 0:data0003/0_
 +mkvextract tracks "data0003.mkv" -c ISO8859-1 1:data0003/1_
 +subp2tiff --sid=0 -n data0003/0_
 +subp2tiff --sid=1 -n data0003/1_
 +for eachTiff in data0003/*.tif; do cuneiform -l fra -f text -o $eachTiff.txt $eachTiff; done
 +subptools -s -w -t srt -i data0003/0_.xml -o 0_.srt
 +subptools -s -w -t srt -i data0003/1_.xml -o 1_.srt
 +</file>
 +
 +====  Exemple de conversion de fichier TS en MKV avec FFMPEG  ====
 +
 +La commande suivante permet d'obtenir l'info : <code>ffmpeg -i <vidéos étudiée> </code>
 +
 +
 +9 pistes :
 +
 +0:0 vidéo
 + 
 +0:1 ne contenant pas de données
 +
 +0:2 Audio
 +
 +0:3 ne contenant pas de données
 +
 +0:5 Subtite
 +
 +0:6 subtitle
 +
 +0:7 piste non reconnue par ffmpeg
 +
 +0:8 piste non reconnue par ffmpeg
 +
 +<code>
 +ffmpeg -threads 4 -i data0003.ts -map 0:0 -map 0:2 -map 0:5 -map 0:6 -acodec copy -vcodec copy -scodec dvdsub output.mkv
 +</code>
 +
 +<note>//-threads// pour pouvoir utiliser un traitement multiprocesseurs
 +
 +-// map// pour spécifier toutes les pistes à utilisables
 +
 +//-acodec// suivi de //copy//  pour le traitements des pistes audio
 +
 +//-vcodec// suivi de //copy// pour le traitement de la piste vidéo
 +//
 +-scodec// suivi de //dvdsub// pour le traitement des sous-titres
 +
 +</note>
 ===== dépendances à installer  ===== ===== dépendances à installer  =====
  
Ligne 14: Ligne 140:
 **[[apt>ffmpeg]]** - une collection de logiciels libres destinés au traitement de flux audio ou vidéo **[[apt>ffmpeg]]** - une collection de logiciels libres destinés au traitement de flux audio ou vidéo
  
-**[[apt>mkvtoolnix]]** éventuellement aussi **[[apt>mkvtoolnix-gui]]** -  un ensemble d'outils permettant de créer, de modifier et d'inspecter des fichiers Matroska +**[[apt>mkvtoolnix]]** éventuellement aussi **[[apt>mkvtoolnix-gui]]** -  un ensemble d'outils permettant de créer, de modifier et d'inspecter des fichiers Matroska 
 + 
 +**[[apt>vobsub2srt]]** - Commande de reconnaissance optique de caractères multi-langue pour extraire des sous-titres
  
 **[[apt>cuneiform]]** - Système de reconnaissance optique de caractères multi-langue **[[apt>cuneiform]]** - Système de reconnaissance optique de caractères multi-langue
Ligne 22: Ligne 150:
  
 ===== Script ts2srt  ===== ===== Script ts2srt  =====
 +
 +<note warning>Script ancien : pas de gestion des erreurs de reconnaissances optiques</note>
  
 [[https://raw.githubusercontent.com/albanmartel/ts2srt/master/ts2srt.bash| ts2srt.bash]] [[https://raw.githubusercontent.com/albanmartel/ts2srt/master/ts2srt.bash| ts2srt.bash]]
Ligne 33: Ligne 163:
 # Courriel : albanmartel(POINT)developpeur(AT)gmail(POINT)com # Courriel : albanmartel(POINT)developpeur(AT)gmail(POINT)com
 # Utilisant comme base de travail le script de beguam # Utilisant comme base de travail le script de beguam
-http://doc.ubuntu-fr.org/tutoriel/vobsub_srt+https://doc.ubuntu-fr.org/tutoriel/vobsub_srt
 # License : GNU GPL # License : GNU GPL
 # Ce script permet d'extraire les sous-titres d'une video TS et de les transformer en SRT éditable. # Ce script permet d'extraire les sous-titres d'une video TS et de les transformer en SRT éditable.
 # #
-# Depends : +# Depends :
 # ffmpeg est une collection de logiciels libres destinés au traitement de flux audio ou vidéo # ffmpeg est une collection de logiciels libres destinés au traitement de flux audio ou vidéo
-# mkvToolnix (interface graphique pour mkvmerge) est un ensemble d'outils permettant de créer, de modifier et d'inspecter des fichiers Matroska +# mkvToolnix (interface graphique pour mkvmerge) est un ensemble d'outils permettant de créer, de modifier et d'inspecter des fichiers Matroska
 # cuneiform - Système de reconnaissance optique de caractères multi-langue # cuneiform - Système de reconnaissance optique de caractères multi-langue
 # ogmrip - Application pour extraire et encoder des DVDs # ogmrip - Application pour extraire et encoder des DVDs
Ligne 45: Ligne 175:
 # Date : 26/08/2015 # Date : 26/08/2015
 # version : 0.1 # version : 0.1
-# Mise-à-jour : +# Mise-à-jour :
 # ---------------------------------------------------- # ----------------------------------------------------
  
Ligne 107: Ligne 237:
   videoFiles=($( ls *.$extension ));   videoFiles=($( ls *.$extension ));
   cd $courant_directory;   cd $courant_directory;
- +}
  
  
Ligne 233: Ligne 363:
 </file> </file>
  
-//Contributeurs principaux : [[:utilisateurs:albanmartel]]+===== Contributeurs ===== 
 +[[:utilisateurs:albanmartel]]