Superposition dans ffmpeg avec sous-titre
Nov 20 2020


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
J'obtiens l'erreur suivante «Impossible de trouver un flux correspondant pour le pavé d'entrée non étiqueté 0 sur le filtre Parsed_subtitles_3». Est-ce la bonne façon de superposer les images et les sous-titres? s'il vous plaît, corrigez-moi où je vais mal.
Si j'ajoute une image par-dessus

Réponses
llogan Nov 20 2020 at 19:02
Exemple simplifié de votre commande
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
Exemple que vous pouvez copier et coller

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
- Utilisation du filtre de couleur pour les entrées synthétiques (les cases rouge, verte et bleue).
- filtre de superposition pour placer les cases vertes et bleues.
- filtre de sous-titres pour placer des sous-titres.
- Le filtre de format est utilisé pour empêcher le flou induit par le sous-échantillonnage chromatique et pour activer alpha / transparence pour la boîte bleue.
fontsdir
L'option a été utilisée dans cet exemple pour localiser les polices externes.fontsdir
peut être omis si vous souhaitez utiliser des polices déjà installées sur votre système.
subs.ass pour l'exemple ci-dessus
[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
- Les sous-titres ont été positionnés avec Alignmentoption dans le fichier ASS.
- La police par défaut a été définie avec l'
Fontname
option dans le fichier ASS. - La police de la ligne 2 a été définie à l'aide de la \fnbalise de remplacement .