Comment fusionner un fichier audio et vidéo dans ffmpeg

161

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

S'il vous plaît, suggérez-moi comment y parvenir. Je souhaite fusionner ces fichiers dans un nouveau fichier vidéo .mp4. Une commande ffmpeg serait la bienvenue.

Sablonneux
la source
Il y a un article décent ici qui pourrait être utile aussi ... cfc.kizzx2.com/index.php/muxing-audio-and-video-with-ffmpeg
Simon East

Réponses:

260

Fusion vidéo et audio, avec réencodage audio

Voir cet exemple, tiré de cette entrée de blog mais mis à jour pour une syntaxe plus récente. Cela devrait être quelque chose à l'effet de:

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

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

La commande ci-dessus convertit l'audio, car les MP4 ne peuvent pas transporter de flux audio PCM. Vous pouvez utiliser tout autre codec audio souhaité si vous le souhaitez. Consultez le Guide d'encodage AAC pour plus d'informations.

Si votre flux audio ou vidéo est plus long, vous pouvez ajouter l' -shortestoption pour que ffmpeg arrête l'encodage une fois qu'un fichier se termine.

Copier l'audio sans ré-encoder

Si votre conteneur de sortie peut gérer (presque) n'importe quel codec - comme MKV -, vous pouvez simplement copier 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 la remplacer, vous devez indiquer à ffmpeg le flux audio à utiliser:

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

L' mapoption 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 du fichier de sortie.

Patrick Georgi
la source
J'ai essayé mais ffmpeg gèle pendant la fusion
Sandy
4
Je ne pense pas que les conteneurs MP4 peuvent avoir des flux audio wav. Essayezffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
Luke
1
J'utilise ceci et il remplace l'audio d'origine de l'audio d'entrée. Et si je veux fusionner l'audio d'entrée avec l'audio de la vidéo d'entrée?
Iqbal Malik
Lignes de commande très
agréables
Génial, j’ai utilisé ffmpeg -i video.mp4 -i audio.wav \ -c: v copie -c: une sortie expérimentale amp -strict.mp4 pour fusionner des fichiers MP3 avec un fichier Wav ... => MP4 5 minutes, restituées en 30 secondes ..Merci
Sonida
12

Depuis que je ne suis pas autorisé à écrire des commentaires à la première réponse avec ma réputation, un addenda ici, parce que j'ai eu ce problème lors de l'encodage de webms.
Si, par exemple, votre flux audio est plus long que le flux vidéo , vous devez le couper, sinon vous aurez la dernière image vidéo sous forme d'image fixe et de son en cours d'exécution.

Pour couper un flux, vous pouvez utiliser -ss [hh: mm: ss] -t [ss] avant chacun des -i "fichier.ext".
-ss [...] définira le point de départ de la coupe
-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
utilisateur136036
la source
4
Vous pouvez également simplement utiliser -shortestpour couper la fin.
Nyuszika7h
5

-ouverture de la commande promt (windows + r -> cmd-> enter)

-Alors allez dans le dossier où vous avez un fichier audio et vidéo

appliquer cette cmd

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

Entrez .... vous obtiendrez un nouveau fichier nommé outPutFime.mp4 (un fichier fusionné audio et vidéo)

UniCoder
la source
2
Il n'est vraiment pas nécessaire de décrire comment utiliser la ligne de commande ici. C'est assez implicite que les utilisateurs seront en mesure de comprendre cela. Surtout que le demandeur a spécifié FFmpeg. Tout de même, la -shortestbalise est très chouette. Beaucoup plus simple que dans la réponse de @ user136036.
Kat
3
Cela ré-encodera tout, ce qui n’est probablement pas ce qui est souhaité.
mardi
'ffmpeg' n'est pas reconnu comme une commande interne ou externe,
UniCoder
Vous devez ajouter ffmpeg à PATH wikihow.com/Install-FFmpeg-on-Windows
Arete
5

Cela a fonctionné pour moi:

ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4
Ronald
la source
1
cela fonctionne partiellement pour moi, ne fonctionne pas pour toutes les entrées, certaines vidéos d'entrée restantes restent identiques dans la sortie
Narendra Singh
1

Essayez d’utiliser mencoder (oui, c’est basé sur ffmpeg, mais on ne sait jamais). J'utilise l' -audiofileargument. J'utilise généralement ffmpeg, cependant, alors prenez ce conseil avec une pincée de sel.

Et, si vous utilisez Windows, Mediacoder (qui n’est plus du tout open source) fonctionne ... c’est une interface pour beaucoup d’encodeurs GNU et quelques non-libres.

Wyatt8740
la source