web-dev-qa-db-fra.com

Comment fusionner un fichier audio et vidéo dans ffmpeg

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.

146
Sandy

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. Ce 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) en tant que 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. Voir le Guide d'encodage AAC pour plus d'informations.

Si votre flux audio ou vidéo est plus long, vous pouvez ajouter l'option -shortest 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'option map fait que ffmpeg utilise 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.

239
Patrick Georgi

Depuis que je ne suis pas autorisé à écrire des commentaires à la première réponse avec ma réputation, un addenda 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 ou sinon vous aurez la dernière image vidéo en tant qu'image fixe et audio 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 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
12
user136036

-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)

4
UniCoder

Cela a fonctionné pour moi:

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

Essayez d’utiliser mencoder (oui, c’est basé sur ffmpeg, mais on ne sait jamais). J'utilise l'argument -audiofile. 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.

1
Wyatt8740