Ich versuche derzeit, ein GIF wie dieses zu reproduzieren.
Aber das Problem, mit dem ich kämpfe, ist, dass ich, um ein GIF mit Textüberlagerung zu erstellen, den folgenden Befehl ausführen würde
ffmpeg -ss 30 -t 3 -i input.flv -i palette.png -filter_complex \
"fps=10,scale=320:-1:flags=lanczos,drawtext="fontfile=/path/to/font.ttf: \
text='Stack Overflow': fontcolor=black: x=160: y=-1"[x];[x][1:v]paletteuse" output.gif
Ich kenne ffmpeg-AnbieterUntertitelaber ich bin nicht sicher, ob dadurch die Position des Textes geändert werden könnte und jede Sekunde ein anderer Text angezeigt werden könnte.
Muss ich mehrere Bilder machen und diese zusammenkleben?
Antwort1
Ich habe es herausgefunden, ffmpeg hat eine between
Option. So können Sie den Zeichentext für die Dauer wie folgt angeben
ffmpeg -ss 30 -t 3 -i file.flv -filter_complex "fps=10,scale=720:-1:flags=lanczos,drawtext=enable='between(t,0,1)':fontfile=font3.ttf:text='word':fontsize=24:fontcolor=white:x=(w-tw)/2:y=(h/PHI)+th,drawtext=enable='between(t,1,2)':fontfile=font3.ttf:text='word what':fontsize=24:fontcolor=white:x=(w-tw)/2:y=(h/PHI)+th,split[x1][x2];[x1]palettegen[p];[x2][p]paletteuse" output.gif