web-dev-qa-db-fra.com

ffmpeg - remplace l'audio en vidéo

Comment remplacer l'audio dans un fichier vidéo en utilisant un fichier audio en utilisant ffmpeg?

J'imagine que la commande ressemble à:

ffmpeg -i v.mp4 -i a.wav -MAGIC video-new.mp4

Ceci est très similaire à Comment remplacer un flux audio dans un fichier vidéo par plusieurs flux audio? mais cette question traite plusieurs pistes audio, ce qui la complique beaucoup, ce qui empêche de savoir quelle partie de la solution est suffisante pour un simple échange audio.

31
qubodup

Vous voudrez peut-être copier le flux vidéo sans réencodage pour gagner beaucoup de temps, mais réencoder le son pourrait aider à éviter les incompatibilités:

ffmpeg -i v.mp4 -i a.wav -c:v copy -map 0:v:0 -map 1:a:0 new.mp4

-map 0:v:0 mappe le premier flux vidéo (index 0) de l'entrée au premier flux vidéo (index 0) de la sortie.

-map 1:a:0 mappe le deuxième flux audio (index 1) de l'entrée au premier flux audio (index 0) de la sortie.

Si l'audio est plus long que la vidéo, vous voudrez ajouter -shortest avant le nom du fichier de sortie.

Si vous ne spécifiez pas de codec audio, vous en sélectionnerez automatiquement un. Vous pouvez en spécifier un, par exemple en ajoutant -c:a libvorbis après -c:v copy.

46
qubodup