Comment puis-je ajouter une superposition de texte sur ma vidéo dans ffmpeg?
c.-à-d. si je donne une vidéo "video1.flv", comment puis-je ajouter du texte "StackOverflow" pendant toute la vidéo, positionné au milieu de l'écran, avec du texte blanc et une bordure?
Utilisez le filtre vidéo drawtext
dans ffmpeg:
ffmpeg -i input.mp4 -vf drawtext="fontfile=/path/to/font.ttf: \
text='Stack Overflow': fontcolor=white: fontsize=24: box=1: [email protected]: \
boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2" -codec:a copy output.mp4
Le @0.5
contrôle l'opacité de la zone de texte. Dans cet exemple, il est défini sur 50%. Vous pouvez supprimer @0.5
et il n'y aura pas de transparence.
-codec:a copy
va copier le flux (re-mux) l'audio et éviter le ré-encodage.
Une alternative au filtre drawtext est d'utiliser sous-titres ASS ou SRT - surtout si vous voulez du texte temporisé ou des softsubs.
Si vous souhaitez mettre à jour ou modifier le texte, consultez les options textfile
et reload
de ce filtre.
Ce filtre nécessite que votre ffmpeg
soit compilé avec --enable-libfreetype
. Si vous obtenez No such filter: 'drawtext'
il manque probablement --enable-libfreetype
. La plupart des versions statiques ffmpeg
disponibles prennent en charge cette fonctionnalité. Voir la page Téléchargement FFmpeg pour les liens.
Voir le documentation du filtre drawtext pour plus d'options et d'exemples.