- Détails
- Catégorie : Textes et sous-titres
ffmpeg -i out.mp4 -filter_complex "color=black@0:100x100,format=yuva444p[c];[c][0]scale2ref[ct][mv31];[ct]setsar=1,split=1[t31];[t31] drawtext=text='text':x='main_w/2-text_w/2+70':y=210:fontsize="100":fontcolor=black,drawtext=text='text2':x='main_w/2-text_w/2+75':y=340:fontsize="100":fontcolor=black, rotate=-0.07:ow=rotw(-0.07):oh=roth(-0.07):c=black@0[txta31];[mv31][txta31]overlay=enable='between(t, 0, 4.15)':x='min(0,-H*sin(-5.07))':y='min(0,W*sin(-5.07))':shortest=1" result.mp4
Add a comment
- Détails
- Catégorie : Textes et sous-titres
ffmpeg -loop 1 -y -i a.jpg -i b.mp3 vf "drawtext="fontsize=120: fontfile=arial.ttf:textfile=1. txt:y=h-40*t"" scale=852x480 setsar=1:1 -vcodec libx264 -b:v 1000k -preset superfast 3.mp4
Add a comment
- Détails
- Catégorie : Textes et sous-titres
Ceci affiche en haut à drotie un décompte en secondes jusque la fin de la video. Cette commande s'effectue en deux temps (ou en associant les deux lignes avec && sous linux)
duration=$(ffprobe -loglevel error -show_entries format=duration -of default=nw=1:nk=1 input.mp4
) ffmpeg -i input.mp4
-vf "drawtext=fontfile=OpenSans-Regular.ttf:text='%{eif\:$duration-t\:d}':fontcolor=white:fontsize=24:x=w-tw-20:y=th:box=1:boxcolor=black@0.5:boxborderw=10,format=yuv420p" -c:v libx264 -c:a copy -movflags +faststart output.mp4
- Détails
- Catégorie : Textes et sous-titres
Ceci permet de faire défiler un texte dans une video. Il n'y a pas de fond sur lequel le faire défiler mais on peut en rajouter un en y intégrant, avant cette commande, une image de la même largeur que la video.
ffmpeg -i sunset.mp4 -vf "drawtext=text=string1:fontfile=MarketSaturday.ttf:y=h-line_h-10:x=w-(t-2)*w/5.5:fontcolor=white:fontsize=140:shadowx=2:shadowy=2" out.mp4
Où :
- -i sunset.mp4 : fichier video en entrée
- -vf : crée un filtre graphique (filtergraph) spécifié enrte double cotes
- text : texte à faire défiler
- fontfile : nom du fichier de la police de caractères (avec son chemin absolu si necessaire)
- y : position y du texte défilant. Dans notre cas présent, c'est la hauteur (h = height) - la hauteur de la ligne (line_h) - 10 pixels
- x : position x du texte défilant, où w est la largeur de la vidéo (width)
- fontcolor : couleur du texte défilant
- fontsize : taille du texte défilant
- shadowx et shadowy : ombre portée du texte, dans les sens X et Y (décalage de l'ombre portée par rapport au texte d'origine)
- out.mp4 : nom du fichier de sortie
Add a comment
- Détails
- Catégorie : Textes et sous-titres
Dans une seule et même video, deux textes apparaitront à des temps différents : l'un à la deuxieme seconde pour une durée de 3 secondes, l'autre à la seconde 5 pour une durée de 6 secondes. Une seule ligne de commande suffit
Notez bien la différence entre les cotes (') et les doubles cotes(")
ffmpeg -i input.mp4 -vf "[in]drawtext=fontfile=ASMAN.TTF:fontsize=40:fontcolor=red:x=(w-text_w)/2:y=h-60:text='coucou':enable='between(t,2,3)',drawtext=fontfile=ASMAN.TTF:fontsize=40:fontcolor=red:x=(w-text_w)/2:y=h-60:text='coucou':enable='between(t,5,6)'" -c:v libx264 -strict -2 00out1.mp4
Notez la "supperposition", "l'apposition" des commandes l'une à coté de l'autre des commandes grâce à la virgule (en rouge). Bien sûr, le temps peut etre spécifié avec des secondes décimales (dixièmes de secondes)
Add a comment- Détails
- Catégorie : Textes et sous-titres
Ceci permet d'apposer un bandeau horizontal, tout le long de la vidéo, avec un texte à l'intérieur :
ffmpeg -i 7.mp4 -vf "format=yuv444p,drawbox=y=ih/PHI:color=black@0.4:width=iw:height=48:t=max, 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 output789.mp4
On retrouve :
- -i 7.mp4 : fichier d'entrée
- -vf : format de sortie
- drawdox : dessin du bandeau
- color : couleur de fond, ainsi que le taux de transparence derriere l'arobase
- width : largeur (iw = largeur de la video)
- height : hauteur du bandeau
dans la partie drawtext :
- fontfile : nom de la police à utiliser
- text : Texte à afficher
- fontcolor : couleur du texte
- fontsize : taille de la police
- format : formay de sortie
- -c:v libx264 : encodage
- -c:a copye : on reprend l'audio
- -movflags + faststart : Déplace quelques données au début du fichier, permettant à la video d'être jouée avant son téléchargement complet
- output789.mp4 : Fichier de sortie
- Détails
- Catégorie : Textes et sous-titres
Ceci permet d'apposer un bandeau horizontal, entre deux time code, suur fond transparent coloré, avec un texte à l'intérieur :
ffmpeg -y -i 1.mp4 -vf "drawbox=enable='between(t,2,6)':y=ih-ih/4:color=black@0.5:width=iw:height=56:t=max", "drawtext=enable='between(t,8,16)':fontfile=roboto.ttf:y=h-h/4+10:x=20:text='Test Heading':fontcolor=white:fontsize=16,drawtext=enable='between(t,2,6)':fontfile=roboto.ttf:y=h-h/4+30:x=20:text='Test sub heading':fontcolor=white:fontsize=12" -acodec copy output.mp4
On retrouve :
- -i 1.mp4 : fichier d'entrée
- -vf : format de sortie
- drawdox : dessin du bandeau
- between(t,2,6) : affichage entre la seconde 2 et la seconde 6
- color : couleur de fond, ainsi que le taux de transparence derriere l'arobase
- width : largeur (iw = largeur de la video)
- height : hauteur du bandeau
- t=max : thickness, épaisseur. Valeur de 3 par défaut
- fontfile : nom de la police de caractères
- y et x : Position de la zone
- text : Texte à afficher
- fontcolor : couleur du texte
- fontsize : taille de la police
Comme on peut le voir sur cet exemple, il est possible de "cumuler" ces affichages tout au long de la video. Comme on peut le voir ici, il y a affichage de deux bandeau (le premier au timecode 2 à 6 secondes et le deuxieme du timecode 8 à 16
dans la partie drawtext :
- fontfile : nom de la police à utiliser
- text : Texte à afficher
- fontcolor : couleur du texte
- fontsize : taille de la police
- format : formay de sortie
- -c:v libx264 : encodage
- -c:a copye : on reprend l'audio
- -movflags + faststart : Déplace quelques données au début du fichier, permettant à la video d'être jouée avant son téléchargement complet
- output789.mp4 : Fichier de sortie
- Détails
- Catégorie : Textes et sous-titres
ffmpeg -i out1.mp4 -filter_complex "color=black:100x100[c]; [c][0]scale2ref[ct][mv]; [ct]setsar=1,split=3[t1][t2][t3]; [t1]drawtext=fontfile=ASMAN.TTF: text='Test Text 1':fontsize=36:fontcolor=white,split[text1][alpha1]; [text1][alpha1]alphamerge,rotate=30:ow=rotw(30):oh=roth(30):c=black@0[txta1]; [t2]drawtext=fontfile=ASMAN.TTF: text='Test Text 2':fontsize=36:fontcolor=white,split[text2][alpha2]; [text2][alpha2]alphamerge,rotate=45:ow=rotw(45):oh=roth(45):c=black@0[txta2]; [t3]drawtext=fontfile=ASMAN.TTF: text='Test Text 3':fontsize=36:fontcolor=white,split[text3][alpha3]; [text3][alpha3]alphamerge,rotate=60:ow=rotw(60):oh=roth(60):c=black@0[txta3]; [mv][txta1]overlay=x='min(0,-H*sin(30))+100':y='min(0,W*sin(30))+50':shortest=1[mv1]; [mv1][txta2]overlay=x='min(0,-H*sin(45))+100':y='min(0,W*sin(45))+50':shortest=1[mv2];[mv2][txta3]overlay=x='min(0,-H*sin(60))+100':y='min(0,W*sin(60))+50':shortest=1" outputSeb.mp4
On se rend bien compte dans ce cas, qu'il y a plusieurs labels sur la video filanes, tous orienté différemment, mais représentant exactement la même chose
Add a comment- Détails
- Catégorie : Textes et sous-titres
ffmpeg –i video.mp4 -i logo.png -filter_complex "overlay=10:10" top_left.mp4
- -i : video en entrée
- -i : fichier de watermark
- -filter_complex : filter de positionnement de l'image
- top_left.mp4 : fichier de sortie
- Détails
- Catégorie : Textes et sous-titres
ffmpeg -f lavfi -i color=c=blue:s=320x240:d=0.5 -vf "drawtext=fontsize=30: fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2:text='Sébastien'" output.mp4
- c=blue : couleur de fond
- s=320x240 : dimensions
- d=0.5 : durée de la video (ici, 0.5 secondes, c'est rapide !)
- -vf "drawtext=..." : toutes les caractéristiques du texte, y compris sa position
- text= : texte à afficher
- output.mp4 : nom du fichier de sortie