Ich möchte mehrere Audiodateien mit einem Hintergrundbild zu einem Video kombinieren. Ich weiß, dass ich Audiodateien mit einer Karte hinzufügen kann,
-i audio1.mp3 -i audio2.mp3 -map 0 -map 1 -map 2
aber wie kann ich zwischen den Audiospuren bestimmte Stilleabschnitte einfügen, während ich ein einzelnes Bild als Hintergrund habe?
Antwort1
Wenn ich Ihre Frage richtig verstanden habe, können Sie mehrere Eingaben machen und diese verketten:
ffmpeg \
-loop 1 -i image.jpg
-i audio1.wav \
-f lavfi -t 5 -i anullsrc \
-i audio2.wav \
-filter_complex "[1:a][2:a][3:a]concat=n=3:v=0:a=1[outa]" \
-map 0:v -c:v copy \
-map "[outa]" -c:a aac -b:a 192k \
-shortest \
out.mkv
Was dies bewirkt:
Dies verwendet ein einzelnes Bild als Eingabe Nr. 0 (Sie können es jedoch
-f lavfi -i testsrc
durch Ihre eigentliche Videodatei ersetzen). Die Eingaben Nr. 1 und Nr. 3 sind die beiden Audiodateien, die Sie verwenden möchten.Eingang Nr. 2 ist ein Filter, der fünf Sekunden Stille erzeugt.
Anschließend verketten Sie alle Audiostreams mit dem
concat
Filter.Um beispielsweise eine dritte Audiodatei hinzuzufügen, geben Sie zwei zusätzliche Audioeingänge an (Stille und Ihren eigentlichen Track), fügen die Eingabebezeichnung für den
concat
Filter hinzu (z. B.[4:a][5:a]
) und erhöhenn=3
aufn=5
.Die Ausgabedatei verwendet das Eingangsvideo unverändert (
-c:v copy
), und der Ton wird mit AAC bei 192 kbit/s neu kodiert. Da Sie einen Filter anwenden, muss der Audiostream neu kodiert werden.Die
-shortest
Option stellt sicher, dass die Kodierung endet, wenn der kürzeste Stream (Video oder Audio) endet.