Comment remplacer un flux audio dans un fichier vidéo par plusieurs flux audio?


19

Je veux remplacer le deuxième flux audio (0: 2) dans un fichier vidéo qui a deux flux audio et lui donner une étiquette si possible. Comment pourrais-je m'y prendre? Toutes les commandes ffmpeg que j'ai trouvées ne me permettent pas de conserver le deuxième flux audio.

Réponses:


22

Utilisez l' -mapoption 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 -mapil faut l'utiliser.

Remplacer le deuxième flux audio

entrez la description de l'image ici

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 0fait référence à la première entrée qui est video.mkv. Le vmoyen "sélectionner le type de flux vidéo".

  • 0:a:0- Le 0fait référence à la première entrée qui est video.mkv. Le amoyen "sélectionner le type de flux audio". Le dernier 0fait référence au premier flux audio de cette entrée. Si seulement 0:aest utilisé, tous les flux vidéo seront mappés.

  • 1:a- Le 1fait référence à la deuxième entrée qui est audio.mp3. Le amoyen "sélectionner le type de flux audio".

  • -codec copysera 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 libmp3lamepour ré-encoder le flux audio en MP3.

  • -shortest mettra fin à la sortie lorsque l'entrée la plus courte se terminera.

Combinez deux flux audio en un seul

entrez la description de l'image ici

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
  • Le filtrage nécessite un ré-encodage, et le amergefiltre est utilisé ici, donc le son ne peut pas être copié en flux dans cet exemple.

ne fonctionnait pas du tout pour moi.
Rudolf Olah

@omouse "n'a pas fonctionné" est difficile à fournir. Vous devez utiliser un lien pastebin pour afficher votre commande et la sortie complète de la console.
llogan

Mon problème est le -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.
Rudolf Olah

1
Je viens de l'utiliser -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:0sert. Je l'ai exclu et j'obtiens les résultats que je voulais.
Dim

2
@ aaronk6 La question d'origine demandait un moyen de mapper plusieurs flux audio à la sortie. L'exemple prend le premier flux audio de la première entrée et le ou les flux audio de la deuxième entrée et les mappe à la sortie. Il semble que certains supposent que l'exemple crée une sortie avec un seul flux audio et sont ensuite confus.
llogan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.