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
sous-titrage [Le 28/01/2017, 13:11] – [Intégration de sous-titres] L'Africainsous-titrage [Le 19/11/2020, 23:24] (Version actuelle) – [Conversion de sous-titres] mavosaure
Ligne 1: Ligne 1:
 +{{tag>portail multimédia vidéo sous-titrage}}
  
 +----
 +
 +======Sous-titrage de vidéos======
 +
 +Cette page recense les logiciels et méthodes permettant de visualiser une vidéo sous-titrée, et de sous-titrer une vidéo.
 +
 +=====Visualisation de sous-titres=====
 +
 +  * [[:Totem]] : lecteur multimédia permettant de visualiser les sous-titres (menu Visualisation -> Sous-titres)
 +  * [[:VLC]] : lecteur multimédia permettant de visualiser les sous-titres (menu Vidéo -> Piste de sous-titres, ou automatiquement si le fichier de sous-titres a le même nom que le fichier vidéo -extension exceptée-, et se situe dans le même répertoire).
 +  * [[:mplayer]] : lecteur multimédia permettant de visualiser les sous-titres
 +  * [[:xine]] : lecteur multimédia permettant de visualiser les sous-titres
 +
 +=====Création de sous-titrages=====
 +
 +^ Logiciel         ^ Remarques           ^ Affiche le nombre de caractères par ligne  (a) ^ Affiche une visualisation des ondes audio (b) ^ 
 +| [[:Aegisub]]    | spécialisé dans le fansub d'anime. Installable via la logithèque Ubuntu | Non                     | Oui |
 +| **Gaupol subtitle editor**   | Installable via la logithèque Ubuntu  | Oui | Non |
 +| [[:Gnome-subtitles]]    | Installable via la logithèque Ubuntu (plus depuis la 18.04)      | Oui                       | Non |
 +| **[[apt>subtitleeditor|Subtitle editor]]**    | Installable via la logithèque Ubuntu     | Oui                       | Oui |
 +
 +(a)  Pratique pour savoir si la lecture du sous-titre sera trop difficile car le ratio nbre de caractère / temps est trop élevé. [[wpfr>Sous-titrage| L'article de Wikipedia sur le sous-titrage]] recommande 1s pour 15 caractères.
 +
 +(b) Pratique pour caler facilement et précisément le début et la fin d'un sous-titre.
 +
 +=====Extraction de sous-titres=====
 +
 +  * [[:Avidemux]] pour extraire les sous-titres d'un DVD. (Menu Outils : VOB > .srt , etc.)
 +  * les [[:matroska|outils mkv]] (mkvmerge, mkvextract) ou l'interface graphique [[:mkv_extractor_gui_v4]]
 +
 +=====Intégration de sous-titres=====
 +
 +  * [[:avidemux#incruster_des_sous-titres|Avidemux]]
 +  * [[:mencoder#integration_sous_titres_srt_dans_une_video|Mencoder]], en ligne de commande
 +  * [[:mmg|MkvMerge Gui]] ou [[:mkvtoolnix]], pour le format [[matroska|mkv]].
 +  * [[:handbrake#choisir_la_langue_et_les_sous-titres|Handbrake]], tous formats, 
 +
 +* Nécessite d'être en super-utilisateur pour Avidemux
 +=====Téléchargement de sous-titres=====
 +
 +  * [[:Subdownloader]] : installable via la logithèque Ubuntu
 +  * [[http://code.google.com/p/gcap/|Gcap]] : un logiciel en ligne de commande pour télécharger les sous-titres de YouTube (présent dans les dépôts depuis Ubuntu 11.10)
 +  * [[https://www.webeev.fr/top/top-10-des-meilleurs-sites-de-sous-titres-de-films-et-series-tv/|Webeev]] : le classement des meilleurs sites pour télécharger des sous-titres
 +  * [[:Subliminal]] : un script qui permet de télécharger les sous-titres depuis plusieurs sources. Il existe un plugin pour //Nautilus/Fichiers//.
 +
 +=====Conversion de sous-titres=====
 +  * **[[apt>subtitleeditor]]**: logiciel avec interface graphique installable via la logithèque Ubuntu. Supporte 11 formats différents, dont SubRip, MicroDVD et Advanced Sub Station Alpha.
 +  * [[:srt2ass]] : script python permettant de convertir en ligne de commande une grande quantité de fichiers SubRip (srt) vers le format Advanced Sub Station Alpha (ass/ssa)
 +  * [[ffmpeg|FFmpeg]] : cet outil à tout faire, en ligne de commande, permet également de  [[https://ffmpeg.org/general.html#Subtitle-Formats|convertir certains formats de sous-titres]]: dvbn dvd, ass/ssa, srt, webvtt...
 +
 +=====Spécial : Sous titres simultanés=====
 +
 +J'ajoute personnellement cette astuce permettant de visualiser 2 sous titres simultanément après avoir très longuement cherché sur internet.
 +Ceci est un script (corrigé) trouvé sur internet ayant comme nom : merge2ass.sh. Le script convertit 2 fichiers sous titre en 1 .ass (équivalent au .ssa). Votre lecteur vidéo doit être en mesure de lire ce fichier sous titre (VLC l'accepte)
 +
 +La commande est la suivante :
 +<code>merge2ass.sh [--help] [movie subtitle1 subtitle2] [-pm|--play-movie]</code>
 +
 +<note>subtitle1 est le sous titre positionné en haut de la vidéo
 +
 +subtitle2 est le sous titre positionné en bas de la vidéo</note>
 +
 +<file bash merge2ass.sh>
 +#!/bin/bash
 +# merge2ass.sh - script for merging two text-subtitles into an ass subtitle file
 +# version 0.9, 8-august-2007
 +# comments/criticism/praise to jose1711-gmail-com
 +
 +# dependencies: mplayer (if your subtitle files need to be converted to srt), gnu utils
 +
 +# thanks to:
 +#  - d.watzke for comments
 +#  - belisarivs for testing
 +#  - boris dušek <boris (dot) dusek - gmail - com> for testing/ideas
 +#
 +# $1 is a movie file
 +# $2 is a subtitle1
 +# $3 is a subtitle2
 +# $4 is optional and could be "-pm" or "--play-movie" for instant watching of the movie
 +
 +# example:
 +# merge2ass.sh movie.avi english.srt slovak.sub
 +# mplayer -noautosub -ass movie.avi -sub movie-bilingual.ass -subcp utf8
 +#
 +# or just
 +# merge2ass.sh movie.avi english.srt slovak.sub -pm
 +#
 +# or even only
 +# merge2ass.sh --detect movie.avi -pm
 +#
 +# ;-)
 +#
 +# release history:
 +# 0.8a (29. 7. 2007)
 +#  - initial public release
 +# 0.8.1a (30. 7. 2007)
 +#  - check_syntax fixed (d.watzke)
 +#  - multiline echo -> cat (d.watzke)
 +#  - removes temp files after conversion
 +# 0.8.2 (1. 8. 2007)
 +#  - check whether the input files exist prior to running MPlayer
 +#  - check for MPlayer binary
 +#  - help page added
 +#  - new optional CLI parameters: -pm (plays movie after conversion), --help
 +# 0.8.2.1 (2. 8. 2007)
 +#  - timestamp in output more compatible (reported by belisarivs)
 +# 0.9 (8. 8. 2007)
 +#  - performs a check for writable output
 +#  - check for MPlayer's support of ass/ssa if -pm is used
 +#  - pointers to subtitle files stored as arrays
 +#  - autorecognition of subtitles based on MPlayer's -sub-fuzziness feature (--detect)
 +#  - output filename based on movie filename (+bilingual.ass)
 +#  - bash now mandatory (non-POSIX syntax used)
 +#  - flag -pm has a long alias (--play-movie)
 +
 +#
 +# some future thoughts:
 +#   - more optional flags (do_not_remove_temp_files, play_but_dont_delete_output_afterwards,dont_do
 +#     the_conversion_just_merging,output_file..)
 +#   - cleaner sed/awk code
 +#   - support for other players (xine, totem, kmplayer, vlc..)
 +#   - subtitle encoding detection based on enca (if present) - boris?
 +#
 +# docs:
 +#   - http://en.wikipedia.org/wiki/SubStation_Alpha
 +#   - http://www.perlfu.co.uk/projects/asa/ass-specs.doc
 +#
 +# THE STORY ENDS HERE
 +# set -x
 +
 +# normally you do not want to see mplayer's error output
 +#mplayer_err=/dev/stderr
 +mplayer_err=/dev/null
 +
 +arg_count="$#"
 +movie="$1"
 +sub[1]="$2"
 +sub[2]="$3"
 +
 +
 +show_help(){
 +cat << EOF
 + ----------------------------------------------------------------------------------
 +|                                                                                  |
 +|  Merge2ass - a script for merging two text subtitles into ass/ssa subtitle file  |
 +|                                         author: jose1711 - gmail - com, 2007/08  |
 + ----------------------------------------------------------------------------------
 +
 +  Usage: merge2ass.sh [--help] [movie subtitle1 subtitle2] [-pm|--play-movie]
 +
 +         or
 +
 +         merge2ass.sh --detect movie [-pm|--play-movie]
 +
 +--help        show this help page and exit
 +
 +--detect      try to detect subtitles using MPlayer's sub-fuzziness=1 flag
 +
 +movie         movie file (anything that MPlayer recognizes)
 +subtitle[12]  file(s) containing text subtitles that MPlayer recognizes 
 +
 +-pm           play movie immediately and remove the output after finishing
 +--play-movie
 +
 +EOF
 +}
 +
 +detect_subtitles(){
 +        while read -r line; do
 +                sub[++i]="$line"
 +        done < <(mplayer -sub-fuzziness 1 -frames 0 "$movie" 2>/dev/null | sed -n "s/^SUB: Added subtitle file ([0-9]*): \(.*\)$/\1/p")
 +        echo "$i subtitles were detected in total."
 +        echo "These two will be used:"
 +        echo "${sub[1]}"
 +        echo "${sub[2]}"
 +}
 +
 +convert_subs(){
 +type mplayer || { echo "MPlayer not installed or binary not in path, please investigate. Exiting.."; exit 1; } 
 +
 +echo "Converting the 1st subtitle file (${sub[1]}) to a time-based format..."
 +# slower but does not require the video file for conversion
 +# mplayer /dev/zero -rawvideo pal:fps=25 -demuxer rawvideo -vc null -vo null -noframedrop -benchmark -sub "$movie" -dumpsrtsub
 +mplayer -dumpsrtsub -noautosub -really-quiet -frames 0 -sub "${sub[1]}" "$movie" 2>>"$mplayer_err" && echo "Done"
 +mv dumpsub.srt "${sub[1]}-temp"
 +echo "Converting the 2nd subtitle file (${sub[2]}) to a time-based format..."
 +mplayer -dumpsrtsub -noautosub -really-quiet -frames 0 -sub "${sub[2]}" "$movie" 2>>"$mplayer_err" && echo "Done"
 +mv dumpsub.srt "${sub[2]}-temp"
 +}
 +
 +generate_ssa_header(){
 +cat > "$output" << EOF
 +[Script Info]
 +Title:
 +Original Script: 
 +Original Translation:
 +Original Editing: 
 +Original Timing: 
 +Original Script Checking:
 +ScriptType: v4.00
 +Collisions: Normal
 +PlayResY: 1024
 +PlayDepth: 0
 +Timer: 100,0000
 +
 +[V4 Styles]
 +Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
 +Style: lang1style,Arial,64,65535,65535,65535,-2147483640,-1,0,1,3,0,6,30,30,30,0,0
 +Style: lang2style,Arial,64,15724527,15724527,15724527,4144959,0,0,1,1,2,2,5,5,30,0,0
 +
 +[Events]
 +Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text 
 +EOF
 +}
 +
 +generate_ssa_dialogs(){
 +sed -e "/ --> /s/,/./g" "${sub[1]}-temp" | tr -d "\r" | awk 'BEGIN{ORS="";print " "} / --> /,/^$/ {ORS=" ";print} /^$/{print "\n"}' | sed -e "s/ --> /,/g" -e "s/^ \([^ ]*\) \(.*\)/Dialogue: Marked=0,\1,lang1style,Cher,0000,0000,0000,,\2/" -e "s/,00:/,0:/g" -e "s/\([:,]\)0\([0-9]\)/\1\2/g" -e "s/\([0-9]\)\(.\)\([0-9]\)\([0-9]\)0\(,\)/\1\2\3\4\5/g" >>"$output"
 +sed -e "/ --> /s/,/./g" "${sub[2]}-temp" | tr -d "\r" | awk 'BEGIN{ORS="";print " "} / --> /,/^$/ {ORS=" ";print} /^$/{print "\n"}' | sed -e "s/ --> /,/g" -e "s/^ \([^ ]*\) \(.*\)/Dialogue: Marked=0,\1,lang2style,Cher,0000,0000,0000,,\2/" -e "s/,00:/,0:/g" -e "s/^ *//g" -e "s/\([:,]\)0\([0-9]\)/\1\2/g" -e "s/\([0-9]\)\(.\)\([0-9]\)\([0-9]\)0\(,\)/\1\2\3\4\5/g" >>"$output"
 +}
 +
 +remove_temp_files(){
 +rm "${sub[1]}-temp" "${sub[2]}-temp"
 +}
 +
 +play_movie(){
 +        mplayer -ass 2>/dev/null >/dev/null || { echo "Too old MPlayer version, can't understand ASS/SSA subs. Install a newer version."; exit 1; }
 +        mplayer -really-quiet -fs "$movie" -sub "$output" -ass -subcp utf8 -noautosub
 +}
 +
 +delete_output(){
 +        rm "$output"
 +}
 +
 +eval last_arg='$'${arg_count}
 +
 +if [ $arg_count -eq 0 ]; then
 +        show_help
 +        exit 0
 +fi
 +
 +for param in $*
 +do
 +        if [ $param = "--help" ]; then show_help; exit 0; fi
 +done
 +
 +if [ "$movie" = "--detect" ]; then
 +        movie="${sub[1]}"
 +        output="${movie%.*}-bilingual.ass"
 +        > "$output" #|| { echo "Can't write here! Exiting.." && echo 1; }
 +        detect_subtitles
 +fi
 +
 +if [ ! -f "$movie" ]; then echo "Movie file ($movie) does not exist. Going back to shell.."; exit 1; fi
 +if [ ! -f "${sub[1]}" ]; then echo "Subtitle1 file (${sub[1]}) does not exist. Going back to shell.."; exit 1; fi
 +if [ ! -f "${sub[2]}" ]; then echo "Subtitle2 file (${sub[2]}) does not exist. Going back to shell.."; exit 1; fi
 +
 +echo "Processing.."
 +# reset output
 +output="${movie%.*}-bilingual.ass"
 +> "$output" #|| { echo "Can't write here! Exiting.." && echo 1; }
 +
 +convert_subs
 +generate_ssa_header
 +generate_ssa_dialogs
 +remove_temp_files
 +
 +if [ "$last_arg" = "-pm" -o "$last_arg" = "--play-movie" ]; then
 +        play_movie
 +        delete_output
 +fi
 +
 +exit 0
 +
 +# set +x
 +</file>
 +
 +Une solution open-source existe en ligne (également distribuée sous forme de jar exécutable) : [[https://www.submerge.ovh/|site]], [[https://github.com/dnbn/submerge/|github]]
 +
 +=====Liens=====
 +
 +  * Discussion "[[http://forum.ubuntu-fr.org/viewtopic.php?id=363195|Sous-titrage de vidéo pour karaoke]]" sur le forum ubuntu-fr
 +  * [[:tutoriel:vobsub_srt|Tutoriel de conversion de sous-titres VobSub en SRT]]