2017-04-30 12 views
0

Ich verwende drawtext, um Text auf einem animierten GIF zu drucken.FFMpeg drawtextbreite?

Alles funktioniert, aber ich kann keine Bounding Box angeben und den Text umbrechen.

verwende ich dies derzeit:

ffmpeg -i image.gif -filter_complex "drawtext=textfile=text.txt:x=main_w/2 - text_w/2:y=main_h/2 - text_h/2:fontfile=Roboto-Regular.ttf:fontsize=24:fontcolor=000000" image_out.gif 

Gibt es eine Möglichkeit, Text zu wickeln?

+0

Ich würde stattdessen Untertitel verwenden. Viele [Beispiele] (http://stackoverflow.com/a/21369850/1109017) auf dieser Website oder siehe [Dokumentation] (https://ffmpeg.org/ffmpeg-filters.html#subtitles) und [FFmpeg wiki] (https://trac.ffmpeg.org/wiki/HowToBurnSubtitlesIntoVideo). Wenn Sie drawtext verwenden müssen, fügen Sie einfach die Zeilenumbrüche in Ihrer 'text.txt' hinzu. – LordNeckbeard

+0

Ich sehe. Würde mir das allerdings einen Textumbruch ermöglichen? Ich sehe keinen Vorteil darin, Untertitel statt Text zu verwenden, um schnell über die Dokumentation zu schauen. – nbrogi

+0

Ja, Untertitel würden den Text automatisch umbrechen. – LordNeckbeard

Antwort

2

Sie können den FFmpeg subtitles filter zum automatischen Zeilenumbruch verwenden und den Text in der Mitte platzieren.

Es gibt viele Untertitelformate, aber diese Antwort enthält Beispiele für ASS- und SRT-Untertitel. ASS unterstützt mehr Formatierungsoptionen, aber SRT ist ein einfacheres Format und kann mit der Option force_style im Untertitel-Filter geändert werden.

enter image description here

ASS Untertitel

Machen Sie Ihre Untertitel in Aegisub. Klicken Sie auf die Schaltfläche, die wie ein rosa "S" aussieht, um den Stilmanager zu öffnen. Klicken Sie auf Bearbeiten. Wählen Sie Ausrichtungswert 5. Speichern Sie die Untertiteldatei als ASS-Format.

ffmpeg Beispiel:

ffmpeg -i input -filter_complex subtitles=subs.srt -c:a copy output 

SRT Untertitel

SRT ist einfacher als ASS, aber es fehlt Funktionen, so dass Sie die force_style Option im Untertitel-Filter verwenden müssen. Sie können diese Untertitel mit einem Texteditor erstellen. Beispiel SRT-Datei herunterladen:

1 
00:00:00,000 --> 00:00:05,000 
Text with 
manual line break 
and with automatic word wrapping of long lines. 

2 
00:00:07,000 --> 00:00:10,000 
Another line. Displays during 7-10 seconds. 

ffmpeg Beispiel:

ffmpeg -i input -filter_complex "subtitles=subs.srt:force_style='Alignment=10,Fontsize=24'" -c:a copy output 
  • Weitere force_style Optionen sehen Sie die Styles Abschnitt in den Inhalt einer ASS-Datei und beziehen sich auf ASS Tags.

  • In diesem Fall verwendet Alignment die legacy line position numbers, aber das ASS-Beispiel oben verwendet das moderne "Numpad" -Nummernsystem.

+0

Danke. Ich wünschte, es gäbe UTF-8-Unterstützung im ASS-Format, aber es funktioniert. – nbrogi

+0

... wissen Sie, ob es eine Möglichkeit gibt, das Fontverzeichnis anzugeben, oder nur die Schriftart, in der die Subs sein sollten? – nbrogi

+0

@nbrogi In 'force_style' können Sie etwas wie' Fontname = Arial' verwenden, oder in SRT etwas wie ' Foo' (ungetestet), oder wählen Sie einfach die Schriftart in Aegisub. – LordNeckbeard