FFmpeg tiene la opción de asignar todas las transmisiones a la salida, debe usar la opción -map 0
para mapear todos los flujos desde la entrada hasta la salida.
En línea completa podría verse como:
ffmpeg -i in.mp4 -c copy -map 0 out.mp4
Para obtener más información, consulte la documentación sobre la selección de secuencias y el -map
opción.
Aparentemente, esta es una pregunta popular, por lo que estoy publicando mi solución como respuesta (anteriormente era una respuesta de comentario) para que otros puedan verla.
Logré encontrar la sintaxis correcta de este ticket. La sintaxis correcta es:
ffmpeg -i in.mp4 -vcodec copy -c:a copy -map 0:0 -map 0:1 -map 0:2 out.mp4
Esto copiará las 3 transmisiones.
OK, leí bastante profundo en el ffmpeg
man page y encontré esto que debería ser útil:
Tenga en cuenta que actualmente cada flujo de salida solo puede contener canales de un solo flujo de entrada; por ejemplo, no puede usar "-map_channel" para seleccionar varios canales de audio de entrada contenidos en diferentes flujos (del mismo archivo o de archivos diferentes) y fusionarlos en un solo flujo de salida. Por lo tanto, actualmente no es posible, por ejemplo, convertir dos flujos mono separados en un solo flujo estéreo. Sin embargo, es posible dividir una transmisión estéreo en dos transmisiones mono de un solo canal.
Si necesita esta característica, una posible solución es utilizar el filtro de combinación. Por ejemplo, si necesita fusionar un medio (aquí input.mkv) con 2 flujos de audio mono en un solo flujo de audio de canal estéreo (y mantener el flujo de video), puede usar el siguiente comando:
ffmpeg -i input.mkv -filter_complex "[0:1] [0:2] amerge" -c:a pcm_s16le -c:v copy output.mkv
Es posible que desee leer y experimentar con las instrucciones de la página de manual en man ffmpeg-filters
para comprender en qué nivel de complejidad se está metiendo al nombrar los canales y el resultado esperado.
[Editar:como señaló Mulvya, esto responde una pregunta, pero no era exactamente la pregunta del cartel original.]