Nakładka w ffmpeg z napisami

Nov 20 2020

Uderza mnie nakładanie obrazu i napisów w FFmpeg, powyżej jest polecenie

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 

Otrzymuję następujący komunikat o błędzie „Nie można znaleźć pasującego strumienia dla nieoznaczonego pola wejściowego 0 na filtrze Parsed_subtitles_3”. Czy jest to właściwy sposób nakładania obrazów i napisów? proszę, popraw mnie tam, gdzie popełniam błąd.

Jeśli dodam na nim obrazek

, znajdę się poniżej

Odpowiedzi

llogan Nov 20 2020 at 19:02

Uproszczony przykład z twojego polecenia

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

Przykład możesz skopiować i wkleić

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
  • Używanie filtra kolorów dla syntetycznych danych wejściowych (czerwone, zielone i niebieskie pola).
  • nakładka filtru, aby umieścić zielone i niebieskie pola.
  • subtitles filter, aby umieścić napisy.
  • filtr formatu jest używany, aby zapobiec rozmyciu wywołanemu przez podpróbkowanie chrominancji i włączyć alfa / przezroczystość dla niebieskiej ramki.
  • fontsdirW tym przykładzie użyto opcji do zlokalizowania czcionek zewnętrznych. fontsdirmożna pominąć, jeśli chcesz użyć czcionek już zainstalowanych w systemie.

subs.ass dla powyższego przykładu

[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
  • Napisy zostały umieszczone z Alignmentopcją w pliku ASS.
  • Domyślną czcionkę ustawiono z Fontnameopcją w pliku ASS.
  • Czcionka dla linii 2 została ustawiona za pomocą \fnznacznika override .