Відповіді:
Скористайтеся -mapопцією, щоб вибрати потоки. Вибір потоку за замовчуванням вибиратиме лише один тип кожного потоку, тому -mapйого потрібно використовувати.

ffmpeg -i video.mkv -i audio.mp3 -map 0:v -map 0:a:0 -map 1:a \
-metadata:s:a:0 language=eng -metadata:s:a:1 language=sme -codec copy \
-shortest output.mkv
0:v- 0Посилається на перший вхід, який є video.mkv. В vозначає «виберіть відеопотік тип».
0:a:0- 0Посилається на перший вхід, який є video.mkv. В aозначає «вибрати тип звукового потоку». Останній 0стосується першого аудіопотоку з цього входу. Якщо тільки 0:aвикористовується, то всі відеопотоки будуть зіставлені.
1:a- 1Посилається на другий вхід, який є audio.mp3. В aозначає «вибрати тип звукового потоку».
-codec copyбуде текти копія (ре-MUX) замість того , щоб закодувати. Якщо вам потрібен певний аудіокодек, слід вказати -c:v copy(щоб зберегти відео), а потім, наприклад, -c:a libmp3lameперекодувати звуковий потік у MP3.
-shortest закінчить вихід, коли закінчиться найкоротший вхід.

ffmpeg -i vid.mkv -i aud.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -strict experimental -b:a 192k -ac 2 \
-shortest out.mp4
amergeфільтр , тому аудіо в цьому прикладі не може бути скопійовано потоком.-codec copy, але я вирішив, що (інша версія ffmpeg), інша проблема, з якою у мене була робота, була -mapскарга на неправильну кількість потоків.
-map 0:v -map 1:a. Я припускаю, що це означає взяти відео з першого файлу (video.mkv), а потім взяти аудіо з другого файлу (audio.mp4) для створення output.mkv ... Не впевнений, для чого -map 0:a:0це. Я це виключив і отримую бажані результати.