web-dev-qa-db-fra.com

Texte sur vidéo ffmpeg

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?

49
Jesper Madsen

Utilisez le filtre vidéo drawtext dans ffmpeg:

enter image description here

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.

100
llogan