ffmpeg - reemplaza audio en video

48

¿Cómo reemplazar el audio en un archivo de video usando un archivo de audio usando ffmpeg?

Me imagino que el comando se ve así:

ffmpeg -i v.mp4 -i a.wav -MAGIC video-new.mp4

Esto es muy similar a ¿Cómo reemplazar una transmisión de audio en un archivo de video con múltiples transmisiones de audio? pero esa pregunta maneja múltiples pistas de audio, lo que lo complica mucho, dejando en claro qué parte de la solución es suficiente para un simple intercambio de audio.

qubodup
fuente

Respuestas:

68

Deberá copiar la transmisión de video sin volver a codificar para ahorrar mucho tiempo, pero volver a codificar el audio puede ayudar a evitar incompatibilidades:

ffmpeg -i v.mp4 -i a.wav -c:v copy -map 0:v:0 -map 1:a:0 new.mp4

-map 0:v:0asigna el primer 0flujo de video (índice ) desde la entrada al primer 0flujo de video (índice ) en la salida.

-map 1:a:0asigna el segundo 1flujo de audio (índice ) de la entrada al primer 0flujo de audio (índice ) en la salida.

Si el audio es más largo que el video, deberá agregarlo -shortestantes del nombre del archivo de salida.

Sin especificar un códec de audio, seleccionará automáticamente uno que funcione. Puede especificar uno, por ejemplo, agregando -c:a libvorbisdespués -c:v copy.

qubodup
fuente
2
o directamente -c copypara volver a mux audio y video sin volver a codificar ninguna de las transmisiones ^^
Francesco Yoshi Gobbo
1
¿Sabes cómo convertir el nuevo audio en el mismo formato (con los mismos parámetros) que en el video original? Quiero decir, necesito que los nuevos audios se codifiquen de la misma manera que el audio anterior.
Kostanos
Funciona como encanto !!
Tessaracter
@Kostanos no automáticamente, pero me gustaría. Por favor haga otra pregunta. Puede hacer referencia a este para aclarar que el suyo es nuevo.
Qubodup