FFmpeg má možnost mapovat všechny streamy na výstup, musíte použít volbu -map 0
k mapování všech toků od vstupu k výstupu.
V plném řádku to může vypadat takto:
ffmpeg -i in.mp4 -c copy -map 0 out.mp4
Další informace najdete v dokumentaci k výběru streamu a v -map
možnost.
Zřejmě je to populární otázka, takže své řešení zveřejňuji jako odpověď (dříve to byla odpověď na komentář), aby to ostatní viděli.
Z tohoto lístku se mi podařilo najít správnou syntaxi. Správná syntaxe je:
ffmpeg -i in.mp4 -vcodec copy -c:a copy -map 0:0 -map 0:1 -map 0:2 out.mp4
Tím se zkopírují všechny 3 streamy.
Dobře, četl jsem dost hluboko do ffmpeg
manuálovou stránku a našel jsem toto, které by mělo být užitečné:
Všimněte si, že v současné době může každý výstupní tok obsahovat pouze kanály z jednoho vstupního toku; nemůžete například použít "-map_channel" topick více vstupních audio kanálů obsažených v různých proudech (ze stejných nebo různých souborů) a sloučit je do jednoho výstupního proudu. V současné době tedy není možné například převést dva samostatné mono streamy do jediného stereo streamu. Rozdělení stereo streamu do dvou jednokanálových mono streamů je však možné.
Pokud tuto funkci potřebujete, možným řešením je použít amergefilter. Pokud například potřebujete sloučit médium (zde input.mkv) se 2 mono audio streamy do jednoho audio streamu stereo kanálu (a zachovat video stream), můžete použít následující příkaz:
ffmpeg -i input.mkv -filter_complex "[0:1] [0:2] amerge" -c:a pcm_s16le -c:v copy output.mkv
Možná si budete chtít přečíst a experimentovat s pokyny manuálové stránky man ffmpeg-filters
abyste pochopili, do jaké úrovně složitosti se dostáváte při pojmenovávání kanálů a očekávaného výstupu.
[Edit:Jak poznamenal Mulvya, toto odpovídá na otázku, ale nebyla to úplně původní otázka plakátu.]