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:
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.
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?
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
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.
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.
Respuestas:
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:
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
-shortest
opció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:
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:
La
map
opció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.fuente
ffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
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:
fuente
-shortest
para cortar el final.-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
Ingrese .... obtendrá un nuevo archivo llamado outPutFime.mp4 (un archivo combinado de audio y video)
fuente
-shortest
etiqueta es muy ingeniosa. Mucho más simple que en la respuesta de @ user136036.Esto funcionó para mí:
fuente
Intente usar mencoder (Sí, está basado en ffmpeg, pero nunca se sabe). Yo uso el
-audiofile
argumento. 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.
fuente