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