videos unir safe multiple files concatenar audio video map ffmpeg mux

unir - FFMPEG mux video y audio(de otro video)-problema de mapeo



ffmpeg windows (2)

Descripción general de las entradas

input_0.mp4 tiene la transmisión de video deseada y input_1.mp4 tiene la transmisión de audio deseada:

En ffmpeg las transmisiones se ven así:

$ ffmpeg -i input_0.mp4 -i input_1.mp4 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from ''input_0.mp4'': Duration: 00:01:48.50, start: 0.000000, bitrate: 4144 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 4014 kb/s, SAR 115:87 DAR 1840:783, 23.98 fps, 23.98 tbr, 16k tbn, 47.95 tbc (default) Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 124 kb/s (default) Input #1, mov,mp4,m4a,3gp,3g2,mj2, from ''input_1.mp4'': Duration: 00:00:30.05, start: 0.000000, bitrate: 1754 kb/s Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x480 [SAR 8:9 DAR 4:3], 1687 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc (default) Stream #1:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 55 kb/s (default)

Números de identificación

ffmpeg hace referencia a los archivos de entrada y las transmisiones con números de índice. El formato es input_file_id:input_stream_id . Como ffmpeg comienza a contar desde 0, la secuencia 1:1 hace referencia al audio de input_1.mp4 .

Especificadores de flujo

Esto se puede mejorar con especificadores de flujo . Por ejemplo, puede decirle a ffmpeg que desea la primera transmisión de video desde la primera entrada ( 0:v:0 ) y la primera transmisión de audio desde la segunda entrada ( 1:a:0 ). Prefiero este método porque es más eficiente. Además, es menos propenso a mapeo accidental porque 1:1 puede referirse a cualquier tipo de flujo, mientras que 2:v:3 solo se refiere a la cuarta transmisión de video del tercer archivo de entrada.

Ejemplos

La opción -map indica ffmpeg qué flujos desea. Para copiar el video de input_0.mp4 y audio de input_1.mp4 :

$ ffmpeg -i input_0.mp4 -i input_1.mp4 -c copy -map 0:0 -map 1:1 -shortest out.mp4

Este próximo ejemplo hará lo mismo:

$ ffmpeg -i input_0.mp4 -i input_1.mp4 -c copy -map 0:v:0 -map 1:a:0 -shortest out.mp4

  • -map 0:v:0 se puede traducir como: desde la primera entrada ( 0 ), seleccione el tipo de transmisión de video ( v ), la primera transmisión de video ( 0 )

  • -map 1:a:0 se puede traducir como: desde la segunda entrada ( 1 ), seleccione el tipo de transmisión de audio ( a ), la primera transmisión de audio ( 0 )

Notas adicionales

  • Con -c copy las secuencias se copiarán en secuencia , no se volverán a codificar, por lo que no habrá pérdida de calidad. Si desea volver a codificar, consulte FFmpeg Wiki: H.264 Encoding Guide .

  • La opción más -shortest hará que la duración de la salida coincida con la duración de la secuencia de entrada más corta.

  • Consulte la -map para obtener más información.

Me gustaría colocar el audio de un video a otro video sin audio (en un comando):

ffmpeg.exe -i video1_noAudio.mov -i video2_wAudio.mov -vcodec copy -acodec copy video1_audioFromVideo2.mov

Supongo que "mapa" es la forma correcta de hacerlo, pero me confundí.

¿Puedes sugerir cómo resolverlo?


Tengo un nuevo comando para fusionar audio a video

ffmpeg -i video.mp4 -i audio.mp4 -map 0.0 -map 1.0 -acodec copy -qscale 4 -vcodec mpeg4 outvideo.mp4

-qscale es la opción establecer calidad para video de ffmpeg

-acódigo de copia es la opción copiar calidad de audio predeterminada para mostrar video

-vcodec mpeg4 es una opción para copiar la calidad de video predeterminada para producir video