Ich füge einer Videodatei mit ffmpeg wie folgt Audio hinzu
ffmpeg -i videofile.mp4 -i audiofile.wav output.mp4
Dadurch wird die Ausgabevideodatei jedoch auf die Länge der Audiodatei erweitert, wenn sie länger als das Video ist. Mit -shortest wird die Videodatei gekürzt, wenn die Audiodatei kürzer als das Video ist. Gibt es also ein Flag, das ffmpeg anweist, die Länge des Ausgabevideos auf die Länge des Eingangsvideos zu reduzieren?
Antworten:
Ich glaube, Sie können Ihr gewünschtes Ziel erreichen, indem Sie die Option -filter_complex und die Option apad filter verwenden, um Ihr Audio am Ende mit Stille aufzufüllen, wenn das Video länger ist. Ihr Befehl wäre:
ffmpeg -i videofile.mp4 -i audiofile.wav -filter_complex " [1:0] apad " -shortest output.mp4
Dies setzt voraus, dass sich das gewünschte Audio im ersten Stream von audiofile.wav befindet. Die [A: B] -Syntax besagt, dass der B'th-Stream vom A'th-Eingang übernommen werden soll (beide beginnen mit 0, also ist [1: 0] der 1. Stream vom 2. Eingang oder audiofile.wav oben).
Details unter: https://www.ffmpeg.org/ffmpeg-filters.html#Examples-68
quelle
-filter_complex
Option eine Neucodierung erzwingt - es ist z. B. möglich,ffmpeg -i videofile.mp4 -i audiofile.wav -c:v copy output.mp4
aber nicht auszuführenffmpeg -i videofile.mp4 -i audiofile.wav -filter_complex " [1:0] apad " -c:v copy -shortest output.mp4
-shortest
ist dies das , was Sie möchten.Es gibt kein Flag, um diese Entscheidung zu automatisieren.
BEARBEITEN
Inspiriert von der Antwort von @ deadcode muss ich klarstellen , dass "kein zu automatisierendes Flag" natürlich nicht wahr ist, wenn Sie bereit sind , erneut zu codieren : In diesem Fall gehen Sie
apad
wie von @deadcode vorgeschlagen vor.Wenn Sie jedoch eine Neukodierung vermeiden möchten (dh
-c:v copy
), steht die Antwort.Es gibt eine
ffconcat
Problemumgehung mit dem Demuxer, aber es erfordert ein wenig Arbeit:.
ffmpeg -i videofile.mp4 -f concat -i audio.ffconcat -c:v copy output.mp4
Dadurch wird der
apad
Filter ohne Filtergraph synthetisiert , wodurch ein Mux ohne Neucodierung ermöglicht wird.quelle
-shortest
, verwenden Sie diese Problemumgehung, wenn Sie Stille ohne Neucodierung hinzufügen möchten.Wenn Sie die Länge Ihrer Videodatei kennen, können Sie dies mithilfe von erreichen
Wobei 43 die Länge Ihrer Videodatei in Sekunden ist.
quelle