Saltar al contenido

¿Cómo eliminar una pista del archivo de video usando ffmpeg?

Intenta comprender el código correctamente previamente a usarlo a tu trabajo si tquieres aportar algo puedes comentarlo.

Solución:

El método más eficiente es usar el mapeo negativo en el -map opción para excluir flujos específicos (“pistas”) mientras se mantienen todos los demás flujos.

Quitar una secuencia/pista de audio específica

ffmpeg -i input -map 0 -map -0:a:2 -c copy output
  • -map 0 selecciona todos los flujos de la entrada.
  • -map -0:a:2 luego anula la selección de la transmisión de audio 3. El índice de transmisión comienza a contar desde 0, por lo que la transmisión de audio 10 sería 0:a:9.

Eliminar todas las secuencias/pistas de audio

ffmpeg -i input -map 0 -map -0:a -c copy output
  • -map 0 selecciona todos los flujos de la entrada.
  • -map -0:a luego anula la selección de todos los flujos de audio de la entrada.

Quitar secuencias/pistas de audio específicas

Mantenga todo excepto las transmisiones de audio n.° 4 (en el desplazamiento 3) y n.° 7 (en el desplazamiento 6):

ffmpeg -i input -map 0 -map -0:a:3 -map -0:a:6 -c copy output

Eliminar todos los subtítulos y datos

ffmpeg -i input -map 0 -map -0:s -map -0:d -c copy output

Solo incluye video y audio

Este ejemplo no necesita usar ningún mapeo negativo.

ffmpeg -i input -map 0:v -map 0:a -c copy output

Eliminación de otros tipos de secuencias/pistas

Si desea eliminar otros tipos de transmisión, puede usar el especificador de transmisión apropiado.

  • v – vídeo, como -map -0:v
  • a – audio, como -map -0:a (como se muestra arriba)
  • s – subtítulos, como -map -0:s
  • d – datos, como -map -0:d
  • t – archivos adjuntos, tales como -map -0:t

Extraer o eliminar un canal de audio específico

Usando una entrada estéreo y un filtro de división de canales. Ejemplo para obtener solo el canal correcto y generar un archivo de audio mono:

ffmpeg -i stereo.wav -filter_complex "[0:a]channelsplit=channel_layout=stereo:channels=FR[right]" -map "[right]" front_right.wav
  • channel_layout es el diseño del canal del flujo de entrada. El valor predeterminado es stereo.

  • channels enumera los canales que se extraerán como flujos de salida separados. El valor predeterminado es all que extrae cada canal de entrada como un flujo individual separado.

  • Ver ffmpeg -layouts para obtener una lista de diseños de canales aceptados (por channel_layout opción) y los nombres de los canales (por channels opción).

  • Consulte FFmpeg Wiki: canales de audio para obtener más ejemplos.

Más información

  • -map documentación de opciones
  • Wiki de FFmpeg: Mapa

Estás buscando -map.

He cambiado a usar avconvpero debería ser más o menos lo mismo.

Digamos que tiene un archivo llamado “input.vob” con una pista de video y dos de audio; y quieres tener “output.vob” con el video y el último audio.

Tu harías:

avconv -i input.vob -map 0:0 -c:v copy -map 0:2 -c:a copy output.vob

Debes notar que:

  1. yo no copie -map 0:1
  2. no necesitaba hacer -an, porque hay pistas de audio. Sin embargo, si no hay ninguna pista de audio, es posible que deba usar un attribute.
  3. A veces, las secuencias no están numeradas de la manera que he descrito, por ejemplo, el audio puede aparecer antes que el video.
  4. Si hay flujos de subtítulos allí, también debe descubrir cómo lidiar con ellos.

No puede trabajar en archivos “in situ”, debe guardarlos en un archivo diferente.

PD Es posible que quieras hacer esas preguntas en video.stackexchange.com la próxima vez.

Comentarios y calificaciones del post

Nos puedes patrocinar nuestro estudio fijando un comentario y dejando una puntuación te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *