213 votes

Comment ajouter un nouvel audio (non mixé) 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 de mixage).

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 nouvel audio à ma vidéo (pas de mixage) en utilisant ffmpeg .

467voto

LordNeckbeard Points 9321

Remplacer l'audio

diagram of audio stream replacement

ffmpeg -i video.mp4 -i audio.wav -map 0:v -map 1:a -c:v copy -shortest output.mp4
  • Le site -map L'option vous permet de sélectionner manuellement les flux / pistes. Voir FFmpeg Wiki : Carte pour plus d'informations.
  • Cet exemple utilise -c:v copy a copie du flux (mux) la vidéo. Il n'y a pas de réencodage de la vidéo. La qualité est préservée et le processus est rapide.
    • Si votre format audio d'entrée est compatible avec le format de sortie, alors changez -c:v copy a -c copy à la copie de flux ambos la vidéo et l'audio.
    • Si vous voulez ré-encoder la vidéo et l'audio, supprimez les éléments suivants -c:v copy / -c copy .
  • Le site -shortest L'option rendra la sortie de la même durée que l'entrée la plus courte.

Ajouter le son

diagram of audio stream addition

ffmpeg -i video.mkv -i audio.mp3 -map 0 -map 1:a -c:v copy -shortest output.mkv
  • Le site -map L'option vous permet de sélectionner manuellement les flux / pistes. Voir FFmpeg Wiki : Carte pour plus d'informations.
  • Cet exemple utilise -c:v copy a copie du flux (mux) la vidéo. Il n'y a pas de réencodage de la vidéo. La qualité est préservée et le processus est rapide.
    • Si votre format audio d'entrée est compatible avec le format de sortie, alors changez -c:v copy a -c copy à la copie de flux ambos la vidéo et l'audio.
    • Si vous voulez ré-encoder la vidéo et l'audio, supprimez les éléments suivants -c:v copy / -c copy .
  • Le site -shortest L'option rendra la sortie de la même durée que l'entrée la plus courte.

Mélange/combinaison de deux entrées audio en une seule

diagram of audio downmix

Utilisez la vidéo de video.mkv . Mélangez les données audio de video.mkv y audio.m4a en utilisant le filtre américain :

ffmpeg -i video.mkv -i audio.m4a -filter_complex "[0:a][1:a]amerge=inputs=2[a]" -map 0:v -map "[a]" -c:v copy -ac 2 -shortest output.mkv

Voir FFmpeg Wiki : Canaux audio pour plus d'informations.

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

Voir aussi

27voto

jwilson Points 51

Musique mp3 vers wav

ffmpeg -i music.mp3 music.wav

tronquer pour 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

25voto

user2513149 Points 603

Si la vidéo d'entrée a plusieurs pistes audio et que vous devez en ajouter une autre, 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 inclure tous les flux (dans ce cas un seul) du second fichier d'entrée ( new_audio.ac3 ).

7voto

Tod Points 71

Aucune de ces solutions n'a fonctionné pour moi. Mon audio original était écrasé, ou je recevais une erreur du type "failed to map memory" avec l'exemple plus complexe "amerge". 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

4voto

Alexandre Doré Points 41

Rien n'a fonctionné pour moi (je pense que c'était parce que ma vidéo .mp4 d'entrée n'avait pas d'audio), alors j'ai trouvé ceci qui a fonctionné pour moi :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X