जवाबों:
अपनी स्ट्रीम चुनने के लिए -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एमपी 3 को ऑडियो स्ट्रीम को फिर से एनकोड करना होगा।
-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है। मैंने इसे बाहर कर दिया और मुझे वे परिणाम मिले जो मैं चाहता था।