¿Eliminar transmisiones en el archivo HEVC H.265 MKV?

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?

Respuestas (1)

En la sintaxis -map 1:a:24, 1representa el índice del archivo de entrada. El conteo comienza desde 0, por lo que 1se refiere al segundo archivo de entrada, pero el comando solo tiene una entrada. asignifica tipo de transmisión y, en este caso, es audio: ves para video, spara subtítulos, dpara datos. 24representa 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:1Puede 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 copyse omite, todas las transmisiones se volverán a codificar, no lo que desea normalmente.