subtítulos codificados en ffmpeg desde la parte superior, más grandes, con un trazo más grueso, sobre un fondo oscuro

Encontré esta página (no puedo comentar ni responder allí, así que aquí hay una nueva pregunta):

¿Renderizar subtítulos srt a video?

con esta línea que funciona bien:

ffmpeg -i input.mp4 -filter:v subtitles=subtitle.srt -c:a copy -c:v libx264 -crf 22 -preset veryfast output.mp4

Necesito lo siguiente y no puedo hacerlo:

  • las líneas de los subtítulos comienzan desde la PARTE SUPERIOR del lienzo
  • los subtítulos tienen un tamaño de carácter más grande y un trazo más grueso
  • el área de subtítulos tiene un fondo oscuro semitransparente

mencoder podría ser otra forma viable de hacerlo.

Respuestas (1)

Aegisub

Usa subtítulos ASS. Dales estilo en Aegisub . Puede diseñar cada letra o palabra individualmente, o aplicar el estilo deseado a todos los subtítulos. Consulte la documentación para obtener instrucciones detalladas.

ingrese la descripción de la imagen aquí

Ejemplo de archivo ASS:

[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,Arial,48,&H00FFFFFF,&H000000FF,&H00000000,&H80000000,0,0,0,0,100,100,0,0,1,6,0,8,10,10,20,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,,Top of canvas. Bigger font size. Thicker stroke.

Sin Aegisub

Puede aplicar estilo a través de la opción de filtro de subtítulos en . Esto debería funcionar con cualquier formato que acepte el filtro de subtítulos.force_styleffmpeg

ffmpeg -i input -vf "subtitles=subs.srt:force_style='Alignment=6,Fontsize=48,Outline=8'" output

Consulte el archivo ASS de ejemplo para conocer las force_styleopciones aceptadas, pero no le permitirá diseñar cada letra o palabra individualmente como puede hacerlo en Aegisub.

Tenga en cuenta que los valores ScaleXy cuando se usan en son un factor, no un porcentaje, por lo que los valores precisos serían (no ) en ese caso.ScaleYforce_style1,1100,100

Fondo transparente

Esto puede ser complicado debido a algunas limitaciones de libass, pero es posible. Consulte ¿Cómo configurar el fondo de los subtítulos en ffmpeg?

Gracias @LordNeckbeard!!! Estaba usando Aegisub 3.2.2 en Ubuntu Linux para crear estos subtítulos sin exceder la velocidad de lectura de 15 cps. Voy a profundizar en sus documentos. Desde esta página sobre estilos y Destacados , a primera vista, me parece que no puedo renderizar el video con subtítulos codificados usando solo Aegisub, ¿o sí? Por ahora, seguí usando el formato SubRip .srt y apliqué su sugerencia en ffmpeg, ¡genial!
Es 720p y usé esta línea: ffmpeg -i input.mp4 -vf "subtitles=subs.srt:force_style='Alignment=6,Fontsize=22,Outline=2'" -c:a copy -c:v libx264 -crf 22 -preset slower output_Alignment_6_Fontsize_22_Outline_2___slower.mp4(Comentario separado porque de lo contrario era demasiado largo, la plataforma no lo permitía. Supongo que debería "aceptar" tu respuesta, pero aún no veo cómo hacerlo).
¿podría indicarme documentos exhaustivos sobre cómo usar la opción force_style? Solo puedo encontrar ejemplos aquí y allá en la web, por ejemplo, no se explican las opciones de alineación (probé 7 por curiosidad y está arriba a la derecha). Nuevamente MUCHAS GRACIAS! (Traté de votar tu respuesta, la plataforma dice que se graba pero no es visible para el público porque no tengo suficiente reputación... tal vez por eso no encuentro ningún botón o enlace para "aceptar" tu respuesta , espero que no te importe, lo siento.)
@JazzTp No estoy seguro de si puede usar Aegisub solo para hardsub, y la pereza me impide buscarlo. Solo lo he usado para crear archivos de subtítulos. La alineación se describe en Alineación de línea (consulte \ay \anetiquetas). force_styleparece usar el posicionamiento heredado ( \a) que tiene menos sentido que el sistema de posicionamiento de "teclado numérico" más actual ( \an). Solo la documentación -force_styleestá debajo de los documentos de filtro de subtítulos a los que me vinculé en la respuesta, pero la página de Etiquetas ASS ayudará.
Gracias de nuevo @LordNeckbeard todo claro (impresionantes posibilidades con el formato Advanced Substation Alpha).
force_style solo implementa las etiquetas establecidas por estilo en la sección INI del archivo ASS.
Funcionó con el formato ASS: ffmpeg -i input.mp4 -vf "subtitles=subs.ass" -c:a copy -c:v libx264 -crf 22 -preset slower output_subsASS_Alignment_8_Font_Arial_55_Outline_5.0___slower.mp4- Gracias @Gyan, de hecho, acabo de ver tu comentario (que, para ser honesto, aún no entiendo del todo) cuando vine aquí para agregar este.
Un ejemplo con formato srt y donde el video original necesitaba reescalarse, porque tenía una resolución demasiado baja para llevar el texto de los subtítulos en una resolución decente:ffmpeg -i input.mp4 -vf "scale=1080x720,subtitles=subs.srt:force_style='Alignment=2,Fontsize=22,Outline=2'" -c:a copy -c:v libx264 -crf 22 -preset slower output_1080x720_Alignment_2_Fontsize_22_Outline_2___slower.mp4
Curiosamente, las fuentes salen más grandes cuando se usa el mismo tamaño de fuente en la opción force_style que cuando se usa en Pinta (editor gráfico de Ubuntu). ¿Alguna idea de por qué este es el caso?
@RoelVandePaar Nunca he oído hablar de Pinta. Tal vez una diferencia en el tamaño de la fuente (píxeles, picas, puntos).