340 votes

Comment fusionner un fichier audio et vidéo dans ffmpeg

Je veux fusionner un fichier audio (format .wav ou .au) avec un fichier vidéo (format .mp4).

Veuillez me suggérer comment réaliser cela. Je veux fusionner ces fichiers pour créer un nouveau fichier vidéo .mp4. Une commande ffmpeg serait la bienvenue.

1 votes

Il y a un article intéressant ici qui pourrait être utile aussi... cfc.kizzx2.com/index.php/muxing-audio-and-video-with-ffmpeg

0 votes

Lien du commentaire de Simon East depuis l'archive web - web.archive.org/web/20150103030913/https://cfc.kizzx2.com/…

534voto

vanmelle Points 622

Fusion de la vidéo et de l'audio, avec réencodage audio

Consultez cet exemple, tiré de cet article de blog mais mis à jour pour une syntaxe plus récente. Cela devrait ressembler à :

ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac output.mp4

Ici, nous supposons que le fichier vidéo ne contient pas encore de flux audio, et que vous souhaitez obtenir le même format de sortie (ici, MP4) que le format d'entrée.

La commande ci-dessus transcode l'audio, car les fichiers MP4 ne peuvent pas contenir des flux audio PCM. Vous pouvez utiliser n'importe quel autre codec audio souhaité si vous le souhaitez. Consultez le Guide d'encodage AAC du Wiki FFmpeg pour plus d'informations.

Si votre flux audio ou vidéo est plus long, vous pouvez ajouter l'option -shortest afin que ffmpeg cesse de coder une fois qu'un fichier se termine.

Copie de l'audio sans réencodage

Si votre conteneur de sortie peut gérer (presque) n'importe quel codec - comme le MKV - alors vous pouvez simplement copier à la fois les flux audio et vidéo :

ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv

Remplacement du flux audio

Si votre vidéo d'entrée contient déjà de l'audio, et que vous souhaitez le remplacer, vous devez indiquer à ffmpeg quel flux audio prendre :

ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4

L'option -map permet à ffmpeg d'utiliser uniquement le premier flux vidéo de la première entrée et le premier flux audio de la deuxième entrée pour le fichier de sortie.

0 votes

J'ai essayé mais ffmpeg se fige en fusionnant

5 votes

Je ne pense pas que les conteneurs mp4 puissent avoir des flux audio wav. Essayez ffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv

1 votes

Je l'utilise et il remplace l'audio d'origine de l'audio d'entrée. Que se passe-t-il si je veux fusionner l'audio d'entrée avec l'audio de la vidéo d'entrée?

24voto

Bruce Points 11

Comme je ne suis pas autorisé à écrire des commentaires à la première réponse avec ma réputation, un addendum ici, car j'ai eu ce problème lors de l'encodage de webms.
Si votre flux audio est par exemple plus long que le flux vidéo, vous devez le couper sinon vous aurez la dernière image vidéo comme une image fixe et l'audio qui fonctionne.

Pour couper l'un ou l'autre flux, vous pouvez utiliser -ss [hh:mm:ss] -t [ss] avant chacun des -i "fichier.ext".
-ss [...] définira le point de départ pour couper
-t [...] définira la longueur du segment en secondes

Exemple:

ffmpeg.exe -ss 00:00:10  -t 5 -i "video.mp4" -ss 0:00:01 -t 5 -i "music.m4a" -map 0:v:0 -map 1:a:0 -y out.mp4

17 votes

Vous pouvez également simplement utiliser -shortest pour couper la fin.

11voto

UniCoder Points 219

Ouvrez l'invite de commande (windows+R -> Cmd+Enter). Ensuite allez à l'intérieur du dossier où vous avez le fichier audio et vidéo. Appliquez cette commande :

ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4

Vous obtiendrez un nouveau fichier nommé outPutFile.mp4 (un fichier fusionné audio et vidéo)

3 votes

Il n'est vraiment pas nécessaire de décrire comment utiliser la ligne de commande ici. Il est sous-entendu que les utilisateurs pourront le comprendre. Surtout que l'auteur a spécifié FFmpeg. Tout de même, la balise -shortest est très astucieuse. Beaucoup plus simple que dans la réponse de @user136036.

5 votes

Cela reprendra tout, ce qui n'est sans doute pas ce qui est voulu.

0 votes

8voto

Ronald Points 280

Cela a fonctionné pour moi :

ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4

1 votes

Il fonctionne partiellement pour moi, ne fonctionne pas pour toutes les entrées, certains vidéos d'entrée restent inchangés dans la sortie

0 votes

1voto

Wyatt Ward Points 1062

Essayez d'utiliser mencoder (oui, il est basé sur ffmpeg, mais on ne sait jamais). J'utilise l'argument -audiofile. En général, j'utilise ffmpeg, donc prenez ce conseil avec un grain de sel.

Et, si vous utilisez Windows, Mediacoder (malheureusement, ce n'est plus open source) fonctionne ... c'est essentiellement une interface pour de nombreux encodeurs gnu et quelques uns non libres.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X