
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 -map
opció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:2
opción es seleccionar la transmisión 2, pero si observa su mkvinfo
salida 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.