Text auf Video ffmpeg

75

Wie kann ich meinem Video in ffmpeg eine Textüberlagerung hinzufügen?

Wie kann ich bei einem Video "video1.flv" "StackOverflow" -Text während des gesamten Videos in der Mitte des Bildschirms mit weißem Text und einem Rand hinzufügen?

Jesper Madsen
quelle
schau hier . nr. 6
BitWorking
22
@bitWorking - Ich sehe, dass Ihr Kommentar bereits 3 Jahre alt ist, aber ich bitte Sie trotzdem, die Mitglieder der Stackoverflow-Community nicht mit Ihren verschleierten Links "Lass mich das für dich googeln" zu beleidigen und Zeit zu verschwenden. Vor allem, wenn Sie die Rekursion einführen (ich bin über die Google-Suche hierher gekommen). Auch die Verwendung von URL-Kürzungen kann potenzielle Malware- oder Spam-Links verbergen, da Sie nicht wissen, wohin Sie verweisen.
FooF

Antworten:

154

Verwenden Sie den drawtextVideofilter in ffmpeg:

Geben Sie hier die Bildbeschreibung ein

ffmpeg -i input.mp4 -vf drawtext="fontfile=/path/to/font.ttf: \
text='Stack Overflow': fontcolor=white: fontsize=24: box=1: [email protected]: \
boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2" -codec:a copy output.mp4
  • Das @0.5steuert die Deckkraft des Textfelds. In diesem Beispiel ist es auf 50% eingestellt. Sie können entfernen @0.5und es wird keine Transparenz geben.

  • -codec:a copywird Kopie streamen die Audio- und vermeiden Re-Encoding (Re-Mux).

  • Eine Alternative zum Drawtext-Filter ist die Verwendung von ASS- oder SRT-Untertiteln, insbesondere wenn Sie zeitgesteuerten Text oder Softsubs wünschen.

  • Wenn Sie den Text aktualisieren oder ändern möchten, lesen Sie die Optionen textfileund reloadfür diesen Filter.

  • Für diesen Filter müssen Sie ffmpegkompiliert werden --enable-libfreetype. Wenn Sie es bekommen No such filter: 'drawtext', fehlt es wahrscheinlich --enable-libfreetype. Die meisten ffmpegverfügbaren statischen Builds unterstützen dies . Links finden Sie auf der FFmpeg-Download- Seite.

  • Weitere Optionen und Beispiele finden Sie in der Dokumentation zum Drawtext-Filter .

llogan
quelle
1
@NoahTernullo gibt es auch Strftime-Optionen und "pts" -Variable, die Sie verwenden können. Um den Tick am unteren Rand zu aktivieren, können Sie wahrscheinlich eine Funktion für x-Variablenwertänderungen verwenden, die auf Punkten oder der Frame-Nummer basieren.
Rogerdpack
1
@chovy Deine ffmpegBedürfnisse müssen mit gebaut werden --enable-libfreetype.
Llogan
2
Zu Ihrer Information, für diejenigen, die mit Brew installieren, können Sie dieses Flag --with-libefreetypean den Installationsbefehl übergeben.
Chovy
7
@chovy Ich denke, die Homebrew-Option, die Sie erwähnt haben, sollte sein--with-freetype
Rico Picone
1
@VivekThummar Es muss in Form von -vf "scale=1920:1080,drawtext=..."Beachten Sie das Komma ( ,), das die Filter verbindet. Das Komma fehlt in Ihrem ausgeführten Befehl. Dies ist ein Problem mit Ihrer Implementierung des Befehls ffmpeg in Android.
Llogan