Cómo fusionar archivos de audio y video en ffmpeg

161

Quiero fusionar un archivo de audio (formato .wav o .au) con un archivo de video (formato .mp4).

Por favor, sugiérame cómo lograr esto. Quiero fusionar estos archivos con el nuevo archivo de video .mp4. Un comando ffmpeg sería muy bienvenido.

Arenoso
fuente
Hay un artículo decente aquí que podría ser útil también ... cfc.kizzx2.com/index.php/muxing-audio-and-video-with-ffmpeg
Simon East

Respuestas:

260

Fusionar video y audio, con codificación de audio

Vea este ejemplo, tomado de esta entrada de blog pero actualizado para una sintaxis más nueva. Debería ser algo para el efecto de:

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental output.mp4

Aquí, suponemos que el archivo de video todavía no contiene ninguna transmisión de audio y que desea tener el mismo formato de salida (aquí, MP4) que el formato de entrada.

El comando anterior transcodifica el audio, ya que los MP4 no pueden transportar transmisiones de audio PCM. Puede usar cualquier otro códec de audio deseado si lo desea. Consulte la Guía de codificación AAC para obtener más información.

Si su transmisión de audio o video es más larga, puede agregar la -shortestopción para que ffmpeg deje de codificar una vez que finalice un archivo.

Copiar el audio sin volver a codificar

Si su contenedor de salida puede manejar (casi) cualquier códec, como MKV, simplemente puede copiar las transmisiones de audio y video:

ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv

Sustitución de transmisión de audio

Si su video de entrada ya contiene audio y desea reemplazarlo, debe decirle a ffmpeg qué secuencia de audio tomar:

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental \
-map 0:v:0 -map 1:a:0 output.mp4

La mapopción hace que ffmpeg solo use la primera transmisión de video desde la primera entrada y la primera transmisión de audio desde la segunda entrada para el archivo de salida.

Patrick Georgi
fuente
Lo intenté pero ffmpeg se está congelando mientras se fusionaba
Sandy
44
No creo que los contenedores mp4 puedan tener secuencias de audio wav. Pruebaffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
Luke
1
Estoy usando esto y está reemplazando el audio original del audio de entrada. ¿Qué sucede si deseo fusionar el audio de entrada con el audio del video de entrada?
Iqbal Malik
Líneas de comando muy dulces ...
Chandra Nakka
Genial, utilicé ffmpeg -i video.mp4 -i audio.wav \ -c: v copy -c: aac -strict experimental output.mp4 para fusionar MP3 con archivo Wav ... => mp4 5 minutos, renderizado 30 segundos ..Gracias
sonida
12

Como no tengo permiso para escribir comentarios a la primera respuesta con mi reputación, un apéndice aquí, porque tuve este problema al codificar webms.
Si su transmisión de audio es, por ejemplo, más larga que la transmisión de video , debe cortarla o, de lo contrario, tendrá el último fotograma de video como imagen fija y audio en ejecución.

Para cortar cualquiera de las secuencias, puede usar -ss [hh: mm: ss] -t [ss] antes de cada uno de los -i "file.ext".
-ss [...] definirá el punto de partida para cortar
-t [...] definirá la longitud del segmento en segundos

Ejemplo:

ffmpeg.exe -ss 00:00:10  -t 5 -i "video.mp4" -ss 0:00:01 -t 5 -i "music.m4a" -map 0:v:0 -map 1:a:0 -y out.mp4
usuario136036
fuente
44
También puedes usar -shortestpara cortar el final.
nyuszika7h
5

-Abra el símbolo del sistema (windows + r -> cmd-> enter)

-entonces vaya al interior de la carpeta donde tiene el archivo de audio y video

aplica este cmd

ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4

Ingrese .... obtendrá un nuevo archivo llamado outPutFime.mp4 (un archivo combinado de audio y video)

UniCoder
fuente
2
Realmente no es necesario describir cómo usar la línea de comando aquí. Está prácticamente implícito que los usuarios podrán resolverlo. Sobre todo porque el autor de la pregunta especificó FFmpeg. De todos modos, la -shortestetiqueta es muy ingeniosa. Mucho más simple que en la respuesta de @ user136036.
Kat
3
Esto volverá a codificar todo, lo que probablemente no sea lo que se desea.
mivk
'ffmpeg' no se reconoce como un comando interno o externo,
UniCoder
Tienes que agregar ffmpeg a RUTA wikihow.com/Install-FFmpeg-on-Windows
Arete
5

Esto funcionó para mí:

ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4
Ronald
fuente
1
funciona parcialmente para mí, no funciona para todas las entradas, algunos videos de entrada resultantes siguen siendo los mismos en la salida
Narendra Singh
1

Intente usar mencoder (Sí, está basado en ffmpeg, pero nunca se sabe). Yo uso el -audiofileargumento. Sin embargo, generalmente uso ffmpeg, así que toma este consejo con una pizca de sal.

Y, si usa Windows, Mediacoder (lamentablemente ya no es de código abierto) funciona ... es básicamente una interfaz para muchos codificadores GNU y algunos no libres.

Wyatt8740
fuente