Tengo varios archivos MKV con video codificado al estilo HEVC/H.265. Quiero, usando la línea de comandos de Windows, crear un nuevo archivo MKV, eliminando todas las pistas de subtítulos y pistas de audio excepto las específicas, archivo por archivo, ya que no tengo necesidad de retener múltiples pistas de sonido y subtítulos en idiomas extranjeros pistas
Digamos que usé ffprobe para encontrar qué flujos hay en un archivo MKV dado. Además, quiero mantener la primera y la tercera pista de audio y las pistas de subtítulos 24 y 25 de dicho archivo. Usé https://stackoverflow.com/questions/63302454/map-metadata-stream-by-filter-in-ffmpeg como referencia.
He intentado hacer eso con
ffmpeg -i INPUTFILE.MKV -map 0:0 -map 1:1 -map 1:3 -map 1:a:24 -map 1:a:25 OUTPUTFILE.MKV
que falla ¿Cómo debo escribir el comando?
En la sintaxis -map 1:a:24
, 1
representa el índice del archivo de entrada. El conteo comienza desde 0
, por lo que 1
se refiere al segundo archivo de entrada, pero el comando solo tiene una entrada. a
significa tipo de transmisión y, en este caso, es audio: v
es para video, s
para subtítulos, d
para datos. 24
representa la pista de audio número 25 (indexado en 0, recuerde). Si su comando tiene un archivo de entrada con tres secuencias de video, tres de audio y tres de subtítulos en el siguiente orden: V A S A V S V A S
, entonces el segundo video será -map 0:v:1
Puede hacer referencia a él usando un índice absoluto usando -map 0:4
. Con la indexación absoluta, no hay un especificador de tipo de transmisión.
Suponiendo que la numeración de flujo en su descripción es correcta, use
ffmpeg -i IN.MKV -map 0:0 -map 0:a:0 -map 0:a:2 -map 0:s:23 -map 0:s:24 -c copy OUT.MKV
Tenga en cuenta que si -c copy
se omite, todas las transmisiones se volverán a codificar, no lo que desea normalmente.