ffmpeg - remplacer l'audio dans la vidéo

48

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 gère plusieurs pistes audio, ce qui la complique beaucoup, ce qui rend difficile de savoir quelle partie de la solution est suffisante pour un simple échange audio.

qubodup
la source

Réponses:

68

Vous voudrez copier le flux vidéo sans réencodage pour gagner beaucoup de temps mais le réencodage audio peut 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:0mappe le premier 0flux vidéo (index ) de l'entrée au premier 0flux vidéo (index ) dans la sortie.

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

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

Ne pas spécifier de codec audio, sélectionnera automatiquement celui qui fonctionne. Vous pouvez en spécifier un en ajoutant par exemple -c:a libvorbisaprès -c:v copy.

qubodup
la source
2
ou directement -c copypour simplement recomposer l'audio et la vidéo sans ré-encoder aucun des flux ^^
Francesco Yoshi Gobbo
1
Savez-vous comment convertir le nouvel audio au même format (avec les mêmes paramètres) que dans la vidéo d'origine? Je veux dire, j'ai besoin que les nouveaux audios soient encodés de la même manière que l'ancien audio.
Kostanos
Fonctionne comme un charme !!
Tessaracter
@Kostanos pas automatiquement mais j'aimerais bien. Veuillez poser une autre question. Vous pouvez faire référence à celui-ci pour clarifier que le vôtre est nouveau.
qubodup