web-dev-qa-db-fra.com

Comment ajouter un nouveau son (pas de mixage) dans une vidéo en utilisant ffmpeg?

J'ai utilisé une commande comme:

ffmpeg -i video.avi -i audio.mp3 -vcodec codec -acodec codec output_video.avi -newaudio

dans la dernière version pour ajouter une nouvelle piste audio à la vidéo (pas mélanger). 

Mais j'ai mis à jour le ffmpeg à la dernière version ( ffmpeg version git-2012-06-16-809d71d ) et maintenant dans cette version le paramètre -newaudio ne fonctionne pas.

Dites-moi s'il vous plaît comment je peux ajouter un nouveau son à ma vidéo (pas mélanger) en utilisant ffmpeg.

108
Vetalll

Ajouter de l'audio à la vidéo: copie en flux

ffmpeg -i video.avi -i audio.mp3 -codec copy -shortest output.avi
  • L'omission de l'option -map utilisera la sélection par défaut stream . Cela fonctionnera si votre entrée vidéo n’a pas d’audio.
  • Cet exemple utilise -codec copy to stream copy (pas de réencodage; la qualité est préservée et elle est rapide).
  • L'option -shortest donnera à output.avi la même durée que l'entrée la plus courte.

Ajouter de l'audio à la vidéo: ré-encoder

Si votre sortie n'apprécie pas les formats d'origine ou si vous souhaitez modifier les formats, vous pouvez spécifier les encodeurs:

ffmpeg -i video.avi -i audio.mp3 -c:v libx264 -c:a libvorbis -shortest output.mkv

Pour choisir manuellement des flux spécifiques

Parfois, la sélection de flux par défaut ne vous donnera pas le résultat souhaité. Dans cet exemple, video.mp4 possède une vidéo et audio et audio.m4a n’a que de l’audio. Utilisez -map pour choisir la vidéo à partir de video.mp4 et l'audio à partir de audio.m4a:

ffmpeg -i video.mp4 -i audio.m4a -map 0:v -map 1:a -c copy -shortest output.mp4
  • -map 0:v - À partir de l'entrée 0 (la première entrée, qui est video.mp4), choisissez le ou les flux video.
  • -map 1:a - Dans l'entrée 1 (la deuxième entrée, qui est audio.m4a), choisissez le ou les flux audio.

Mélanger/combiner deux entrées audio en une

Prenez une vidéo à partir de video.webm et utilisez le filtre amerge pour combiner l’audio à partir de video.webm et audio.oga:

ffmpeg -i video.webm -i audio.oga -filter_complex \
"[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a libvorbis -ac 2 -shortest out.webm

Générer un son silencieux

Vous pouvez utiliser le filtre anullsrc pour créer un flux audio silencieux. Le filtre vous permet de choisir la disposition des canaux souhaitée (mono, stéréo, 5.1, etc.) et la fréquence d'échantillonnage.

ffmpeg -i video.mp4 -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 \
-c:v copy -shortest output.mp4

Regarde aussi

230
llogan

musique mp3 au wav

ffmpeg -i music.mp3 music.wav

tronquer pour s'adapter à la vidéo

ffmpeg -i music.wav -ss 0 -t 37 musicshort.wav

mélanger musique et vidéo

ffmpeg -i musicshort.wav -i movie.avi final_video.avi
19
jwilson

Si la vidéo d'entrée comporte plusieurs pistes audio et que vous devez en ajouter une, utilisez la commande suivante:

ffmpeg -i input_video_with_audio.avi -i new_audio.ac3 -map 0 -map 1 -codec copy output_video.avi

-map 0 signifie copier (inclure) tous les flux du premier fichier d'entrée (input_video_with_audio.avi) et -map 1 signifie d'inclure tous les flux (ici un) du deuxième fichier d'entrée (new_audio.ac3).

12
user2513149

Aucune de ces solutions n'a vraiment fonctionné pour moi. Mon audio d'origine était écrasé ou une erreur du type "échec de mappage de la mémoire" avec l'exemple plus complexe 'amerge' était en cours. Il semble que j'avais besoin de -filter_complex amix.

ffmpeg -i videowithaudioyouwanttokeep.mp4 -i audiotooverlay.mp3 -vcodec copy -filter_complex amix -map 0:v -map 0:a -map 1:a -shortest -b:a 144k out.mkv
2
Tod

Rien n’a vraiment fonctionné pour moi (je pense que c’est parce que mon fichier vidéo au format .mp4 n’avait aucun son) alors j’ai trouvé que cela fonctionnait pour moi:

ffmpeg -i input_video.mp4 -i balipraiavid.wav -map 0:v:0 -map 1:a:0 output.mp4

0
Alexandre Doré

Si vous utilisez une ancienne version de FFMPEG et que vous ne pouvez pas effectuer de mise à niveau, vous pouvez procéder comme suit:

ffmpeg -i PATH/VIDEO_FILE_NAME.mp4 -i PATH/AUDIO_FILE_NAME.mp3 -vcodec copy -shortest DESTINATION_PATH/NEW_VIDEO_FILE_NAME.mp4

Notez que j'ai utilisé -vcodec

0
Waqleh