Wie kann ich mit ffmpeg bestimmte Stilleabschnitte zwischen den Titeln einfügen?

Wie kann ich mit ffmpeg bestimmte Stilleabschnitte zwischen den Titeln einfügen?

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 testsrcdurch 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 concatFilter.

  • 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 concatFilter hinzu (z. B. [4:a][5:a]) und erhöhen n=3auf n=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 -shortestOption stellt sicher, dass die Kodierung endet, wenn der kürzeste Stream (Video oder Audio) endet.

verwandte Informationen