El comando correcto de FFmpeg es:
ffmpeg -i video.mp4 -i audio.mp4 -map 0:0 -map 1:0 -c copy output.mp4
Esto proporcionará dos flujos de entrada, el video que ya tiene y el audio, por ejemplo, de un archivo MP4 con audio AAC, y los combinará usando las -mapopciones.
Aquí, el primer número 0:0es el archivo de entrada ( 0para el archivo de video y 1el archivo de audio), y el segundo número es el flujo de ese archivo ( 0ya que solo hay un flujo cada uno, video o audio). Las dos transmisiones se asignarán al archivo de salida, primero video, luego audio.
Los flujos de bits se copiarán y no se volverán a codificar utilizando la -c copyopción Puede observar esto en la salida de FFmpeg:
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #1:0 -> #0:1 (copy)
-shortestsi desea que solo sea la duración de la entrada más corta (útil si el audio es música que es más larga que el video).Puedes usar
ffmpegpara lograr eso. Solo lo estoy haciendo desde la parte posterior de mi cerebro debilitado, pero tal vez algo como esto funcione:fuente
ffmpegantes, no puedo recordar sus argumentos. Supongo que tienen que ver con el códec / formato, pero lo que sí-v:c,-a:cy-anrepresentan?-c:vy-c:a, no-v:cy-a:c. Además, al-andeshabilitar la salida de audio, el archivo de resultados no volverá a tener audio. Si combina archivos, tendrá que asignarlos explícitamente a menos que FFmpeg pueda adivinar lo que quiere (por ejemplo, fusionar video AVI + audio WAV) / cc @popliteaHay algunos editores de video de código abierto.
En Windows hay Windows Movie Maker o Microsoft Live Movie Maker. Sin embargo, no tengo experiencia con estos.
En Linux hay OpenShot, que es bastante fácil de usar.
fuente