ffmpeg drawtext filter - crée un fond transparent avec du texte


11

Je travaille actuellement avec le drawtextfiltre. Jusqu'à présent, je n'ai réussi qu'avec des drawtextconfigurations d'options à utiliser la bonne police et à placer le texte horizontalement centré. Comment puis-je avoir la possibilité drawtextd'afficher du texte sur une vidéo comme indiqué ci-dessous?

ffmpeg

ffmpeg -i "/media/test/test.mp4" -vf drawtext="fontfile=/usr/share/fonts/truetype/open-sans/OpenSans-Regular.ttf:text='Title of this Video':x=(w-tw)/2:y=(h-th)/2"  /media/test_edited.mp4"

Réponses:


21

Utilisez drawboxpour la boîte et drawtextpour le texte.

Coléoptère rouge

ffmpeg -i input.mp4 -vf \
"format=yuv444p, \
 drawbox=y=ih/PHI:color=black@0.4:width=iw:height=48:t=fill, \
 drawtext=fontfile=OpenSans-Regular.ttf:text='Title of this Video':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th, \
 format=yuv420p" \
-c:v libx264 -c:a copy -movflags +faststart output.mp4
  • drawtexta une boxoption, mais pour autant que je sache, il ne peut pas être une largeur arbitraire et est relative à la taille du texte, c'est pourquoi drawboxest utilisé à la place.

  • Le formatfiltre est utilisé pour améliorer la couleur de la drawboxzone; sinon, selon vos formats d'entrée et de sortie, la zone peut sembler désaturée ou monochrome. Le formatfiltre est ensuite utilisé à nouveau pour garantir que le format de pixel du fichier de sortie est compatible avec tous les lecteurs.

  • Le son est copié en flux dans cet exemple, car vous ne voudrez peut-être pas le ré-encoder inutilement.

  • Les anciens ffmpegutilisateurs devront utiliser à la t=maxplace de t=fill.


Parfait, cela est hors de portée de la question actuelle et je devrai peut-être créer une nouvelle question. Toutes suggestions sur la façon d'ajouter la snapchatminuterie. Par exemple, je l'ai fait quelques tests et ffmpeg contient une source vidéo testsrc qui contient une minuterie: ffplay -f lavfi -i testsrc. Le chiffre 0 du minuteur initial a une taille de 29x52 pixels et sa position depuis le coin supérieur gauche est de 256 pixels horizontalement et 94 pixels verticalement. Je peux recadrer la zone d'un chiffre comme ceciffmpeg -f lavfi -i testsrc -vf crop=29:52:256:94 -t 10 timer1.mp4
Code_Ed_Student

J'ai ajouté une image avec une minuterie à la question. Le minuteur est un compte à rebours basé sur la durée de la vidéo.
Code_Ed_Student

Oui, je vais créer une nouvelle question pour cela. Vous avez raison. 30. 29, 28...etc.
Code_Ed_Student


1
Super et vous avez raison, cela a affecté la boîte
Code_Ed_Student

1

ffmpeg -i C: \ Users \ Developer_2 \ Videos \ 2.mkv -vf drawtext = "fontfile = C \: / Regular.ttf: text = 'apcis.tmou.org': fontcolor = white: fontsize = 24: box = 1: boxcolor=black@0.4: x = w-tw: y = h-th "C: \ inetpub \ wwwroot \ videos \ 1.mp4


cela fonctionne pour moi, mais j'utilise boxcolor-white@0.9
sabre tabatabaee yazdi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.