¡Hola, Invitado! (Iniciar sesiónRegístrate)
Hora: 26 Apr 2024, 03:40

[Solucionado] ffmpeg: convertir mkv a mp4+subtítulos

01 Oct 2021, 17:39 (Este mensaje fue modificado por última vez en: 04 Oct 2021 22:04 por Noctis001)
Mensaje: #1

[Solucionado] ffmpeg: convertir mkv a mp4+subtítulos

Buenas, hace unos días que llevo investigando como quemar los subtítulos de los mkv al pasarlos a mp4 con ffmpeg.
He conseguido quemarlos bien cuando los subtítulos van dentro del mkv, pero no consigo que me coja las fuentes cuando les hago demux (a veces me gusta cambiar el estilo para dejarlo más a mi gusto).
Cuando lo intento con subtítulos externos en ass, cambia las fuentes de los estilos a Arial, y claro, destroza totalmente el aspecto.
¿Cómo puedo hacer que coja las fuentes correctas?

Gracias.
01 Oct 2021, 22:52
Mensaje: #2

RE: [Ayuda] Pasar de mkv a mp4 con subtítulos con ffmpeg

No se que parámetros usas para incrustarlos, pero yo, cuando los subtítulos son ass externos, lo hago así y me quedan las fuentes tal como están definidas dentro del fichero ass:
Código:
ffmpeg -i anime_episodio_01.mkv -acodec copy -sn -vcodec libx264 -crf 17 -vf "ass=f='anime_episodio_01.ass'" anime_episodio_01.mp4
Claro esta, que todos los ficheros tienen que estar en la misma carpeta de la cual también se invoca el comando de arriba.
02 Oct 2021, 18:02 (Este mensaje fue modificado por última vez en: 02 Oct 2021 18:04 por Noctis001)
Mensaje: #3

RE: [Ayuda] Pasar de mkv a mp4 con subtítulos con ffmpeg

(01 Oct 2021)hanekawaneko escribió:  No se que parámetros usas para incrustarlos, pero yo, cuando los subtítulos son ass externos, lo hago así y me quedan las fuentes tal como están definidas dentro del fichero ass:
Código:
ffmpeg -i anime_episodio_01.mkv -acodec copy -sn -vcodec libx264 -crf 17 -vf "ass=f='anime_episodio_01.ass'" anime_episodio_01.mp4
Claro esta, que todos los ficheros tienen que estar en la misma carpeta de la cual también se invoca el comando de arriba.

Haciéndolo así me arroja estas 2 líneas en el log:
[Parsed_ass_0 @ 0000015298b7bf40] fontselect: (Open Sans Semibold, 700, 0) -> Arial-BoldMT, 0, Arial-BoldMT
[Parsed_ass_0 @ 0000015298b7bf40] fontselect: (Open Sans Semibold, 700, 100) -> Arial-BoldItalicMT, 0, Arial-BoldItalicMT

Como ves, me cambia las fuentes y no sé por qué. Las descomprimo directamente en la carpeta dónde tengo el ffmpeg y el mkv.
¿Las instalas antes de comprimir?
03 Oct 2021, 15:19
Mensaje: #4

RE: [Ayuda] Pasar de mkv a mp4 con subtítulos con ffmpeg

(02 Oct 2021)Noctis001 escribió:  Haciéndolo así me arroja estas 2 líneas en el log:
[Parsed_ass_0 @ 0000015298b7bf40] fontselect: (Open Sans Semibold, 700, 0) -> Arial-BoldMT, 0, Arial-BoldMT
[Parsed_ass_0 @ 0000015298b7bf40] fontselect: (Open Sans Semibold, 700, 100) -> Arial-BoldItalicMT, 0, Arial-BoldItalicMT

Como ves, me cambia las fuentes y no sé por qué. Las descomprimo directamente en la carpeta dónde tengo el ffmpeg y el mkv.
¿Las instalas antes de comprimir?

Después de una búsqueda en internet, me he dado cuenta de que ese comando solo funciona con Linux. Para Windows tienes que instalar los fuentes tal como ya suponías. Pero una vez instalados debería funcionar normalmente con el mismo comando y ademas, nunca es malo tener mas fuentes en su sistema.
03 Oct 2021, 21:34
Mensaje: #5

RE: [Ayuda] Pasar de mkv a mp4 con subtítulos con ffmpeg

(03 Oct 2021)hanekawaneko escribió:  Después de una búsqueda en internet, me he dado cuenta de que ese comando solo funciona con Linux. Para Windows tienes que instalar los fuentes tal como ya suponías. Pero una vez instalados debería funcionar normalmente con el mismo comando y ademas, nunca es malo tener mas fuentes en su sistema.
Gracias, solucionado el tema de las fuentes.
Ahora estoy intentando que me coja más de un mkv con su correspondiente subtítulo, pero a lo más que he llegado ha sido esto:
Código:
for %%a in (*.mkv) do ffmpeg -i "%%a" -acodec copy -sn -vcodec libx264 -crf 17 -vf "ass=f='%%a.ass'" "%%~na.mp4"
pause

El problema está es que ahora no me coge el subtítulo, pues me arroja error diciendo:
Código:
[Parsed_ass_0 @ 00000235d98d3ac0] libass API version: 0x1500000
[Parsed_ass_0 @ 00000235d98d3ac0] libass source: commit: 0.15.0-50-g49f116ab1fa4386f6a5191f322ac29872279516e
[Parsed_ass_0 @ 00000235d98d3ac0] Shaper: FriBidi 1.0.10 (SIMPLE) HarfBuzz-ng 2.8.0 (COMPLEX)
[Parsed_ass_0 @ 00000235d98d3ac0] Using font provider directwrite
[Parsed_ass_0 @ 00000235d98d3ac0] ass_read_file(01.mkv.ass): fopen failed
[Parsed_ass_0 @ 00000235d98d3ac0] Could not create a libass track when reading file '01.mkv.ass'
[AVFilterGraph @ 00000235d98e65c0] Error initializing filter 'ass' with args 'f=01.mkv.ass'
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
Conversion failed!
03 Oct 2021, 21:48
Mensaje: #6

RE: [Ayuda] Pasar de mkv a mp4 con subtítulos con ffmpeg

(03 Oct 2021)Noctis001 escribió:  El problema está es que ahora no me coge el subtítulo, pues me arroja error diciendo:
Código:
[Parsed_ass_0 @ 00000235d98d3ac0] libass API version: 0x1500000
[Parsed_ass_0 @ 00000235d98d3ac0] libass source: commit: 0.15.0-50-g49f116ab1fa4386f6a5191f322ac29872279516e
[Parsed_ass_0 @ 00000235d98d3ac0] Shaper: FriBidi 1.0.10 (SIMPLE) HarfBuzz-ng 2.8.0 (COMPLEX)
[Parsed_ass_0 @ 00000235d98d3ac0] Using font provider directwrite
[Parsed_ass_0 @ 00000235d98d3ac0] ass_read_file(01.mkv.ass): fopen failed
[Parsed_ass_0 @ 00000235d98d3ac0] Could not create a libass track when reading file '01.mkv.ass'
[AVFilterGraph @ 00000235d98e65c0] Error initializing filter 'ass' with args 'f=01.mkv.ass'
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
Conversion failed!

Pues mira, cuando haces lo del
Código:
for %%a in (*.mkv) do ...
y los ficheros mkv se llaman
Código:
01.mkv
02.mkv
etc.mkv
entonces en el parámetro
Código:
-vf "ass=f='%%a.ass'"
se añade el ".ass" al "01.mkv" osea que tus ficheros de subtítulos deberían llamarse
Código:
01.mkv.ass
02.mkv.ass
etc.mkv.ass
O tienes que cambiar el parámetro para que solo incluya el "01" y no el ".mkv".

Espero que entiendas a lo que me refiero.
04 Oct 2021, 19:46
Mensaje: #7

RE: [Ayuda] Pasar de mkv a mp4 con subtítulos con ffmpeg

Vale, creo que ya lo he conseguido. Aquí está la solución por si fuera de utilidad a otro usuario.

Para comprimir los mkv de uno en uno o especificando cuál se quiere procesar:
Código:
ffmpeg -i input.mkv -acodec copy -sn -vcodec libx264 -crf 17 -vf "ass=f='input.ass'" output.mp4
pause

Para todos los mkv de una carpeta dada:
Código:
for %%a in (*.mkv) do ffmpeg -i "%%~a" -acodec copy -sn -vcodec libx264 -crf 17 -vf "ass=f='%%~na.ass'" "%%~na.mp4"
pause

Probado en Windows, y previamente instaladas las fuentes tipográficas correspondientes.


Usuario(s) navegando en este tema: 1 invitado(s)