Resumen de entradas
input_0.mp4
tiene el flujo de video deseado y input_1.mp4
tiene el flujo de audio deseado:
En ffmpeg
las corrientes se ve 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
se refiere a archivos de entrada y flujos con números de índice. El formato es input_file_id:input_stream_id
. Dado que ffmpeg
comienza a contar desde 0, la transmisión se 1:1
refiere al audio de input_1.mp4
.
Especificadores de flujo
Esto se puede mejorar con especificadores de flujo . Por ejemplo, puede decir ffmpeg
que desea el primer flujo de video de la primera entrada ( 0:v:0
) y el primer flujo de audio de 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 al cuarto flujo de video del tercer archivo de entrada.
Ejemplos
La -map
opción indica ffmpeg
qué transmisiones desea. Para copiar el video input_0.mp4
y el 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 siguiente 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 flujo de video ( v
), primer flujo de video ( 0
)
-map 1:a:0
se puede traducir como: desde la segunda entrada ( 1
), seleccione el tipo de flujo de audio ( a
), primer flujo de audio ( 0
)
Notas adicionales
Con -c copy
las transmisiones, la transmisión se copiará , no se volverá a codificar, por lo que no habrá pérdida de calidad. Si desea volver a codificar, consulte FFmpeg Wiki: Guía de codificación H.264 .
La -shortest
opción hará que la duración de la salida coincida con la duración del flujo de entrada más corto.
Consulte la -map
documentación de la opción para obtener más información.