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"
Code_Ed_Student
la source

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:[email protected]: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.

llogan
la source
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
Nouvelle question publiée: video.stackexchange.com/questions/15556/ffmpeg-video-with-timer
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: [email protected]: x = w-tw: y = h-th "C: \ inetpub \ wwwroot \ videos \ 1.mp4

kostia7alania
la source
cela fonctionne pour moi, mais j'utilise [email protected]
sabre tabatabaee yazdi