Superposición en ffmpeg con subtítulos

Nov 20 2020

Me sorprende la superposición de imágenes y subtítulos en FFmpeg, arriba está el comando

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 

Recibo el siguiente error "No se puede encontrar una secuencia coincidente para el panel de entrada 0 sin etiquetar en el filtro Parsed_subtitles_3". ¿Es esta la forma correcta de superponer imágenes y subtítulos? por favor corríjame dónde me equivoco.

Si agrego una imagen encima

, busque la siguiente imagen

Respuestas

llogan Nov 20 2020 at 19:02

Ejemplo simplificado de su comando

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

Ejemplo que puede copiar y pegar

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
  • Usar filtro de color para entradas sintéticas (los cuadros rojo, verde y azul).
  • filtro de superposición para colocar los cuadros verde y azul.
  • filtro de subtítulos para colocar subtítulos.
  • El filtro de formato se utiliza para evitar la borrosidad inducida por submuestreo de croma y para habilitar alfa / transparencia para el cuadro azul.
  • fontsdirLa opción se utilizó en este ejemplo para localizar fuentes externas. fontsdirse puede omitir si desea utilizar fuentes ya instaladas en su sistema.

subs.ass para el ejemplo anterior

[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
  • Los subtítulos se colocaron con la Alignmentopción en el archivo ASS.
  • La fuente predeterminada se estableció con la Fontnameopción en el archivo ASS.
  • La fuente para la Línea 2 se estableció usando una \fnetiqueta de anulación .