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édentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
extraire_sous-titres_video [Le 26/08/2015, 20:38]
albanmartel [Contributeurs]
extraire_sous-titres_video [Le 01/09/2022, 00:08]
moths-art Passage de http à https sur les liens externes (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
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é de l'algorithme décrit 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 ===== =====  Algorithme =====
  
-  * étudier fichier TS contenant ​sous-titres ​vobsub ​avec ffmpeg +Inspiré de l'​algorithme ​ : [[tutoriel:​vobsub_srt|Conversion de sous-titres ​VobSub en SRT]] 
-  * étudier ​les numéros des pistes "​subtitles"​+ 
 +<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 sous-titres vobsub dans une vidéos mastroika
   * extraire les sous-titres des vidéos mastroïka avec mkvextract   * extraire les sous-titres des vidéos mastroïka avec mkvextract
Ligne 17: Ligne 22:
   * création d'un fichier srt    * 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 25: Ligne 141:
  
 **[[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 32: 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 43: 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.
  • extraire_sous-titres_video.txt
  • Dernière modification: Le 11/09/2022, 12:17
  • par moths-art