Pętla tekstu, który czyści od lewej do prawej za pomocą filtru tekstu rysunkowego FFMPEG

3

Mam następujące polecenie FFMPEG, które poprawnie czyści tekst na dole filmu.

ffmpeg -y -i test_small.mov -acodec libmp3lame -vcodec libx264 -pix_fmt yuv420p -b:a 192k -b:v 1400k -ar 44100 -crf 18 -vf "drawtext=text=string1 string2 string3 string4 string5 string6 string7 :expansion=normal:fontfile=foo.ttf: y=h-line_h-10:x=(5*n): fontcolor=white: fontsize=40: shadowx=2: shadowy=2" -an left_to_right_small.mp4

Ale dzieje się to tylko raz. Jak to zmienić, aby animacja zapętlała się z opóźnieniem między każdą pętlą?

Bachalo
źródło

Odpowiedzi:

5

To działa:

-vf "drawtext=text=string1 string2 string3 string4 string5 string6 string7 :expansion=normal:fontfile=foo.ttf: y=h-line_h-10:x=(mod(5*n\,w+tw)-tw): fontcolor=white: fontsize=40: shadowx=2: shadowy=2"

Zobacz Desmos, jak to działa.

Wykres

x- oś to szerokość wideo.

y - oś to czas.

Czarna linia to szerokość obrazu (regulowana w Desmos za pomocą suwaka x).

Czarny odcień to tekst w mojej formule.

tw Desmos odpowiada twFFmpeg CMD, czyli szerokości tekstu.

Niebieski obszar to tekst w oryginalnej formule.

Timothy Gu
źródło
To cudownie! Jak ustawić liczbę pętli?
Bachalo,
@eco_bach To nie jest tak proste, jak się wydaje. Możesz użyć if.
Timothy Gu,
@eco_bach faktycznie jest to wykonalne: (if(lt(5*n/(w+tw)\,NUMBER_OF_LOOPS)\,mod(5*n\,w+tw)-tw\,w)). Patrz Desmos
Timothy Gu,