Réponses:
Utilisez l' -map
option pour choisir vos flux. La sélection de flux par défaut ne choisira qu'un seul de chaque type de flux, c'est pourquoi -map
il faut l'utiliser.
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
- Le 0
fait référence à la première entrée qui est video.mkv
. Le v
moyen "sélectionner le type de flux vidéo".
0:a:0
- Le 0
fait référence à la première entrée qui est video.mkv
. Le a
moyen "sélectionner le type de flux audio". Le dernier 0
fait référence au premier flux audio de cette entrée. Si seulement 0:a
est utilisé, tous les flux vidéo seront mappés.
1:a
- Le 1
fait référence à la deuxième entrée qui est audio.mp3
. Le a
moyen "sélectionner le type de flux audio".
-codec copy
sera copie flux (re-MUX) au lieu de coder. Si vous avez besoin d'un codec audio spécifique, vous devez spécifier -c:v copy
(pour conserver la vidéo) puis, par exemple, -c:a libmp3lame
pour ré-encoder le flux audio en MP3.
-shortest
mettra fin à la sortie lorsque l'entrée la plus courte se terminera.
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
filtre est utilisé ici, donc le son ne peut pas être copié en flux dans cet exemple.-codec copy
, mais j'ai corrigé cela (version différente de ffmpeg), l'autre problème que j'avais avec le -map
, il se plaignait du mauvais nombre de flux.
-map 0:v -map 1:a
. Je suppose que cela signifie prendre la vidéo du premier fichier (video.mkv) puis prendre l'audio du deuxième fichier (audio.mp4) pour créer le fichier output.mkv ... Je ne sais pas à quoi cela -map 0:a:0
sert. Je l'ai exclu et j'obtiens les résultats que je voulais.