FFmpeg ha l'opzione per mappare tutti i flussi sull'output, devi usare l'opzione -map 0
per mappare tutti i flussi dall'input all'output.
In linea completa potrebbe assomigliare a:
ffmpeg -i in.mp4 -c copy -map 0 out.mp4
Per maggiori informazioni vedere la documentazione sulla selezione del flusso e il -map
opzione.
Apparentemente questa è una domanda popolare, quindi sto postando la mia soluzione come risposta (in precedenza era una risposta a un commento) in modo che gli altri possano vederla.
Sono riuscito a trovare la sintassi corretta da questo ticket. La sintassi corretta è:
ffmpeg -i in.mp4 -vcodec copy -c:a copy -map 0:0 -map 0:1 -map 0:2 out.mp4
Questo copierà tutti e 3 i flussi.
OK, ho letto abbastanza a fondo nel ffmpeg
pagina man e ho trovato questo che dovrebbe essere utile:
Si noti che attualmente ogni flusso di output può contenere solo canali da un singolo flusso di input; ad esempio non è possibile utilizzare "-map_channel" per selezionare più canali audio di input contenuti in flussi diversi (dallo stesso file o da file diversi) e unirli in un singolo flusso di output. Pertanto, attualmente non è possibile, ad esempio, trasformare due flussi mono separati in un singolo flusso stereo. Tuttavia, è possibile suddividere un flusso stereo in due flussi mono a canale singolo.
Se hai bisogno di questa funzione, una possibile soluzione alternativa consiste nell'utilizzare amergefilter. Ad esempio, se devi unire un file multimediale (qui input.mkv) con 2 flussi audio mono in un singolo flusso audio del canale stereo (e mantenere il flusso video), puoi utilizzare il seguente comando:
ffmpeg -i input.mkv -filter_complex "[0:1] [0:2] amerge" -c:a pcm_s16le -c:v copy output.mkv
Potresti voler leggere e sperimentare le istruzioni della pagina man su man ffmpeg-filters
per capire a quale livello di complessità ti stai avvicinando per la denominazione dei canali e l'output previsto.
[Modifica:come ha notato Mulvya, questo risponde a una domanda, ma non era proprio la domanda del poster originale.]