J'ajoute de l'audio à un fichier vidéo en utilisant ffmpeg comme ça
ffmpeg -i videofile.mp4 -i audiofile.wav output.mp4
Cependant, cela étend le fichier vidéo de sortie à la longueur du fichier audio s'il est plus long que la vidéo. L'utilisation de -shortest réduit le fichier vidéo court si le fichier audio est plus court que la vidéo. Existe-t-il un indicateur pour indiquer à ffmpeg de réduire la durée de la vidéo de sortie à la longueur de la vidéo d'entrée?
Réponses:
Je crois que vous pouvez atteindre votre objectif souhaité en utilisant l'option -filter_complex et l'option de filtre apad pour atténuer votre audio avec un silence à la fin si la vidéo est plus longue. Votre commande serait:
ffmpeg -i videofile.mp4 -i audiofile.wav -filter_complex " [1:0] apad " -shortest output.mp4
Cela suppose que l'audio que vous voulez se trouve dans le premier flux de audiofile.wav, la syntaxe [A: B] dit de prendre le Bème flux à partir de la Aème entrée (les deux commençant par 0, donc [1: 0] est le 1er flux de la 2e entrée, ou audiofile.wav ci-dessus).
Détails sur: https://www.ffmpeg.org/ffmpeg-filters.html#Examples-68
la source
-filter_complex
option force le réencodage - il est par exemple possible d'exécuterffmpeg -i videofile.mp4 -i audiofile.wav -c:v copy output.mp4
mais pasffmpeg -i videofile.mp4 -i audiofile.wav -filter_complex " [1:0] apad " -c:v copy -shortest output.mp4
-shortest
c'est ce que vous voulez.Il n'y a aucun indicateur pour automatiser cette décision.
ÉDITER
Inspiré par la réponse de @ deadcode, je dois préciser que "aucun indicateur à automatiser" n'est bien sûr pas vrai, si vous êtes prêt à recoder : dans ce cas, allez
apad
comme suggéré par @deadcode.Si toutefois vous voulez éviter de réencoder (c'est-à-dire
-c:v copy
), la réponse est valable .Il existe une solution de contournement en utilisant le
ffconcat
démultiplexeur, mais il a besoin d'un peu de travail:.
ffmpeg -i videofile.mp4 -f concat -i audio.ffconcat -c:v copy output.mp4
Cela synthétisera le
apad
filtre sans graphique de filtre, permettant ainsi un multiplexage sans réencodage.la source
-shortest
, utilisez cette solution de contournement si vous souhaitez ajouter du silence sans réencodage.Si vous connaissez la longueur de votre fichier vidéo, vous pouvez le faire en utilisant
Où 43 est la longueur de votre fichier vidéo en secondes.
la source