Dans un récent article, nous vous expliquions comment sous-titrer ses vidéos avec FFmpeg. Nous sommes passés de cette vidéo :

à cette vidéo :

Seulement, l’aspect des sous-titres dans cet exemple est une valeur par défaut.

Dans ce tutoriel, nous allons donc vous expliquer pas à pas comment modifier l’aspect des sous-titres avec FFmpeg. Cela comprend la taille de la police, la police de caractère, les couleurs, etc.

Comprendre le code et l’aspect par défaut

Dans ce tutoriel, nous ne reviendrons pas sur les étapes nécessaires pour ajouter un sous-titre à votre vidéo. Pour cela, nous vous renvoyons vers notre article comment sous-titrer ses vidéos avec FFmpeg avant de continuer votre lecture ici.

Pour modifier l’aspect des caractères, il va falloir revoir certaines choses. Cela comprend le fichier texte supposé supporter les détails de contenu, de temporalité et d’aspect des sous-titres.

Voici le fichier texte qui servait de base de données concernant les informations de sous-titres dans le précédent tutoriel :

On y retrouve les détails concernant l’ordre d’apparition, l’heure d’apparition et le contenu des sous-titres. Néanmoins, rien ne stipule le moindre détail concernant l’apparence des sous-titres.

Pour modifier l’aspect des sous-titres, nous allons modifier ce fichier texte en y ajoutant de nouveaux attributs.

Liste des attributs pour personnaliser l’aspect des sous-titres avec FFmpeg

Police de caractère
  • Fontname: Nom de la police (ex. Arial, Times New Roman, etc.)
Taille de la police
  • Fontsize: Taille de la police (ex. 20 pour une taille de police de 20 points)
La couleur
  • PrimaryColour: Couleur principale des sous-titres (ex : "&H00FFFFFF" pour le blanc en format ARGB)
  • SecondaryColour: Couleur secondaire des sous-titres (ex : "&H000000FF" pour le bleu en format ARGB)
  • OutlineColour: Couleur du contour du texte (ex : "&H80000000" pour un contour semi-transparent en format ARGB)
  • BackColour: Couleur de l'arrière-plan des sous-titres (ex : "&H40000000" pour un fond semi-transparent en format ARGB)

Pour trouver le code ARGB d’une couleur au format HEX, rendez-vous sur ce convertisseur de couleurs, vous n’aurez qu’à ajouter “&H” devant le résultat pour l’ajouter à votre fichier texte répertoriant les données sur les sous-titres.

Style du texte
  • Bold: Met le texte en gras (1 pour activer, 0 pour désactiver)
  • Italic: Met le texte en italique (1 pour activer, 0 pour désactiver)
  • Underline: Souligne le texte (1 pour activer, 0 pour désactiver)
  • StrikeOut: Barre le texte (1 pour activer, 0 pour désactiver)
Bordures
  • Outline: Épaisseur du contour du texte (ex. 2 pour un contour de 2 pixels)
  • BorderStyle: Style des bordures (0 pour aucun, 1 pour un bord simple)
Alignement
  • Alignment: Alignement horizontal des sous-titres (ex. 2 pour le centre, 7 pour le bas de l'écran)
Espacement
  • MarginL, MarginR, MarginV: Marge gauche, droite et verticale du texte (ex. 20 pour 20 pixels)
Effets spéciaux
  • Karaoke: Met le texte en mode karaoké (1 pour activer, 0 pour désactiver)

Déterminer l’aspect des sous-titres, l’exemple

Maintenant que nous connaissons tous les attributs permettant de modifier l’aspect des sous-titres avec FFmpeg, nous allons déterminer ceuxavec lesquelsnous souhaitons jouer pour donner l’aspect final à nos sous-titres :

  • La police de caractère : on choisira Britannic Bold *
  • La taille : on choisira 24 points
  • La couleur du texte : on choisira jaune
  • La couleur du contour de texte : on choisira noire

(*) Pour le choix de la police de caractère, vérifiez d’abord qu’elle soit enregistrée par votre ordinateur. Rendez-vous sur le dossier qui détient ces polices. Dans la barre de recherche de votre navigateur Windows, tapez “C:\Windows\Fonts”.

Une fois que les choix sont faits, rendez-vous sur le fichier texte recueillant toutes les données concernant les sous-titres. Puis modifiez-le afin qu’il ait le même aspect que notre exemple :

[Script Info]
Title: Default Aegisub file
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Alignment

Style : Default,Britannic Bold,24,&H000000,&H00FFFF,&H00000000,&H99000000,-1,0,6

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.70,Default,,0,0,0,,This is an example.
Dialogue: 0,0:00:02.80,0:00:05.20,Default,,0,0,0,,To show how to add subtitles with FFmpeg.

Pensez à modifier les éléments pour que cela corresponde à votre besoin.

Ajouter les sous-titres à la vidéo avec FFmpeg

Dès lors que votre fichier texte est terminé et que vous l’avez enregistré dans le dossier où l’on retrouve la vidéo d’origine, il ne vous reste plus qu'à ouvrir une invite de commande. (Sous Windows, cliquez sur "Windows "+"R". Cherchez "cmd" et appuyez sur Entrée).

Dans la fenêtre de commande, accédez au répertoire où se trouvent votre fichier vidéo et votre fichier texte de sous-titres en utilisant la commande "cd" :

cd C:\Users\Utilisateur\Documents\Subtitles

Assurez-vous de remplacer “Utilisateur” par votre nom d’utilisateur réel.

Une fois que vous êtes dans le répertoire contenant les fichiers vidéo et de sous-titres, vous pouvez utiliser la commande FFmpeg pour ajouter les sous-titres à la vidéo. Voici la commande que vous pouvez utiliser :

ffmpeg -i YOUR_VIDEO.mp4 -vf "ass=Votre_FILE_TEXT.txt" -c:a copy -c:v libx264 -crf 23 -preset très rapide NAME_OF_FILE_WITH_SUBTITLES.mp4

Dans notre exemple, voici le codec que nous appliquons sur l’invite de commande :
ffmpeg -i without_subtitles.mp4 -vf "ass=Subtitle_FFmpeg.txt" -c:a copy -c:v libx264 -crf 23 -preset veryfast with_coloured_subtitles.mp4

Voici le résultat que nous obtenons :

Vous avez désormais toutes les cartes en main pour créer des sous-titres en leur donnant l’aspect que vous souhaitez grâce à FFmpeg.

Toutefois, cela peut vous sembler difficile à mettre en œuvre. Dans ce cas, pourquoi ne pas utiliser une API de génération de vidéos telle qu'Abyssale pour un résultat similaire sans toucher à la moindre ligne de code et en quelques minutes ?