Überlagerung in ffmpeg mit Untertitel

Nov 20 2020

Ich bin beeindruckt von überlagerten Bildern und Untertiteln in FFmpeg. Oben ist der Befehl

ffmpeg -i bg.png -vcodec libvpx-vp9 -i test.webm -i test.png -y -filter_complex "[1:v]scale=1210:682[scale1];[scale1]rotate=0:c=black@0:ow=rotw(0):oh=roth(0)[rotate0];[0:v][rotate0]overlay=x=291.12:y=206.9[overlay0];[overlay0]subtitles=test.ass,overlay=x=291.12:y=206.9[textoverlay10];[2:v]scale=630:354[scale2];[scale2]rotate=0:c=black@0:ow=rotw(0):oh=roth(0)[rotate2];[textoverlay10][rotate2]overlay=x=737.13:y=50.87[overlay2];[overlay2]subtitles=test.ass,overlay=x=291.12:y=206.9" -pix_fmt yuv420p -t 10 ver.mp4 

Ich erhalte die folgende Fehlermeldung "Auf Filter Parsed_subtitles_3 kann kein passender Stream für unbeschriftetes Eingabefeld 0 gefunden werden". Ist dies die richtige Methode zum Überlagern von Bildern und Untertiteln? Bitte korrigieren Sie mich, wo ich falsch liege.

Wenn ich ein Bild darüber hinzufüge

, finden Sie unten ein Bild

Antworten

llogan Nov 20 2020 at 19:02

Vereinfachtes Beispiel aus Ihrem Befehl

ffmpeg -loop 1 -i background.png -i bird.webm -filter_complex "[0]subtitles=subs.ass[bg];[bg][1]overlay=shortest=1,format=yuv420p" output.mp4

Beispiel können Sie kopieren und einfügen

ffmpeg -f lavfi -i color=c=red:s=320x240,format=yuv444p -f lavfi -i color=c=green:s=280x200,format=yuv444p -f lavfi -i [email protected]:s=80x80,format=yuva444p -filter_complex "[0][1]overlay=(W-w)/2:(H-h)/2,subtitles=subs.ass:fontsdir=/tmp/font[bg];[bg][2]overlay=10:10:format=auto,format=yuv420p" -t 10 output.mp4
  • Verwenden des Farbfilters für synthetische Eingaben (rote, grüne und blaue Felder).
  • Überlagerungsfilter zum Platzieren der grünen und blauen Kästchen.
  • Untertitel filtern , um Untertitel zu platzieren.
  • Der Formatfilter wird verwendet, um durch Chroma-Subsampling verursachte Unschärfe zu verhindern und Alpha / Transparenz für Blue Box zu aktivieren.
  • fontsdirIn diesem Beispiel wurde die Option verwendet, um externe Schriftarten zu suchen. fontsdirkann weggelassen werden, wenn Sie bereits in Ihrem System installierte Schriftarten verwenden möchten.

subs.ass für das obige Beispiel

[Script Info]
; Script generated by Aegisub 3.2.2
; http://www.aegisub.org/
Title: Default Aegisub file
ScriptType: v4.00+
WrapStyle: 0
ScaledBorderAndShadow: yes
YCbCr Matrix: None

[Aegisub Project Garbage]
Last Style Storage: Default

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Bradley Hand,28,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,7,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,Line 1: Bradley Hand font\N{\fnComic Sans MS}Line 2: Comic Sans MS font{\fn}\NLine 3: Bradley Hand font
  • Untertitel wurden mit AlignmentOption in der ASS-Datei positioniert .
  • Die Standardschriftart wurde mit der FontnameOption in der ASS-Datei festgelegt.
  • Die Schriftart für Zeile 2 wurde mithilfe des \fnÜberschreibungs-Tags festgelegt .