Estou tentando mover um texto do canto inferior direito (fundo externo) para o centro da tela. O texto preto deve ir exatamente onde está o texto verde.
Isto é o que eu tentei:
ffplay -f lavfi -loop 0 -i "color=color=yellow:size=800x400,drawtext=text='Test':fontsize=70:font='Arial Black':fontcolor=green:x=(W-tw)/2:y=(H-th)/2,drawtext=text='Test':fontcolor=black:fontsize=70:font='Arial Black':x=W-(t)*((W+tw)/2)/6:y=x*(H/W):enable='between(t,0,6)'"
A matemática pode ser um pouco complicada, mas é possível...
Assuma que sabemos antecipadamente: W=
800
, H=400
, tw=170
, th=54
.Podemos pré-calcular os seguintes parâmetros:
Comando FFplay:
ffplay -f lavfi -loop 0 -i "color=color=yellow:size=800x400,drawtext=text='Test':fontsize=70:fontfile=ariblk.ttf:fontcolor=green:x=(W-tw)/2:y=(H-th)/2,drawtext=text='Test':fontcolor=black:fontsize=70:fontfile=ariblk.ttf:x=(400+(535.5-t*89.249)*0.8944272-85):y=(200+(535.5-t*89.249)*0.4472136-27):enable='between(t,0,6)'"
Comando FFmpeg para criar
test.gif
:ffmpeg -y -f lavfi -i "color=color=yellow:size=800x400:duration=6,format=rgb24,drawtext=text='Test':fontsize=70:fontfile=ariblk.ttf:fontcolor=green:x=(W-tw)/2:y=(H-th)/2,drawtext=text='Test':fontcolor=black:fontsize=70:fontfile=ariblk.ttf:x=(400+(535.5-t*89.249)*0.8944272-85):y=(200+(535.5-t*89.249)*0.4472136-27):enable='between(t,0,6)',split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" test.gif
Substituindo todas as constantes e usando apenas W, H, tw, th:
ffmpeg -y -f lavfi -i "color=color=yellow:size=800x400:duration=6,format=rgb24,drawtext=text='Test':fontsize=70:fontfile=ariblk.ttf:fontcolor=green:x=(W-tw)/2:y=(H-th)/2,drawtext=text='Test':fontcolor=black:fontsize=70:fontfile=ariblk.ttf:x=(W/2+(sqrt((W/2+tw/2)*(W/2+tw/2)+(H/2+th/2)*(H/2+th/2))-t*sqrt((W/2+tw/2)*(W/2+tw/2)+(H/2+th/2)*(H/2+th/2))/6)*W/sqrt(W*W+H*H)-tw/2):y=(H/2+(sqrt((W/2+tw/2)*(W/2+tw/2)+(H/2+th/2)*(H/2+th/2))-t*sqrt((W/2+tw/2)*(W/2+tw/2)+(H/2+th/2)*(H/2+th/2))/6)*H/sqrt(W*W+H*H)-th/2):enable='between(t,0,6)',split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" test.gif
Resultado: