Copia ffmpeg de las fuentes adjuntas para ser utilizadas por los subtítulos .ass

Copia ffmpeg de las fuentes adjuntas para ser utilizadas por los subtítulos .ass

Tengo un archivo .ass que quiero mezclar en un vídeo que requiere fuentes adicionales.

Parece que no hay ninguna opción para copiar los archivos adjuntos de un archivo a otro, así que los descarté todos usando

ffmpeg -dump_attachment:t "" -i input.mkv

Pero, ¿cómo los introduzco correctamente en el nuevo archivo?

He probado lo siguiente:

ffmpeg -i input.mkv -c copy -attach "fontastique.ttf" -metadata:s: mimetype=application/x-truetype-font -attach "Franchise - Extra.ttf" -metadata:s: mimetype=application/x-truetype-font -attach "Painfresco-Italic.ttf" -metadata:s: mimetype=application/x-truetype-font -attach "Painfresco-Regular.ttf" -metadata:s: mimetype=application/x-truetype-font -attach "SETFIRETOTHERAIN.TTF" -metadata:s: mimetype=application/x-truetype-font -attach "Volter__28Goldfish.ttf" -metadata:s: mimetype=application/x-truetype-font output.mkv

las fuentes parecen estar adjuntas, pero todas las transmisiones, incluido el video/audio/subtítulos, se mostrarán con un tipo MIME establecido de las fuentes.

Stream #0:1: Audio: aac, 44100 Hz, stereo, fltp (default) (forced)
Metadata:
  MIMETYPE        : application/x-truetype-font
Stream #0:2: Subtitle: ssa (default) (forced)
Metadata:
  MIMETYPE        : application/x-truetype-font
Codec 0x18000 is not in the full list.
Stream #0:3: Attachment: unknown_codec
Metadata:
  filename        : fontastique.ttf
  mimetype        : application/x-truetype-font
...etc...

Los subtítulos no pueden encontrar la fuente porque todavía aparece como fuente predeterminada del reproductor, no como las adjuntas.

Eldocumentacionesel ejemplo dice

ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv

pero no tengo idea de qué significa -metadata:s:2, pensé que le dice a qué secuencia adjuntarlo, pero al usar -metadata:s:2, siendo 2 la secuencia de subtítulos, falla

Could not write header for output file #0 (incorrect codec parameters ?): Error number -22 occurred

¿Cómo copio o adjunto correctamente varias fuentes a un contenedor MKV para utilizarlas en una secuencia de subtítulos .ass?

Respuesta1

Primero, puedes copiar fuentes con ffmpeg. La -mapopción anula algunos valores predeterminados y selecciona todas las secuencias de la entrada. Ejemplo:

ffmpeg -i infile.mkv -map 0 -c copy outfile.mkv

Vea también elDocumentación del mapa FFmpegpara más información.

Para adjuntar fuentes a un video existente, la -metadata:s:2opción es seleccionar la transmisión 2, pero si observa su mkvinfosalida verá que los archivos adjuntos son su propia transmisión. No están "adjuntos" a la secuencia de subtítulos. Entonces, en el ejemplo de su pregunta, usted querría -metadata:s:3. Y los archivos adjuntos adicionales deben utilizar los especificadores de flujo correspondientes.

información relacionada