Filtern und Zusammenführen in ffmpeg auf einmal

Filtern und Zusammenführen in ffmpeg auf einmal

Ich möchte mehrere Änderungen gleichzeitig an Videodateien vornehmen.

Ich muss dem Eingabevideo einen Intro- und Outro-Videoausschnitt hinzufügen. Das bedeutet, dass ich drei Videos zusammenführen muss. Ich muss dem Eingabevideo (dem zweiten Segment) ein Overlay-Bild hinzufügen und nur das. Wie kann ich diese zu einer Zeile kombinieren?

Ich habe das in zwei Schritten geschafft. Zuerst das Overlay:

ffmpeg -i input.mkv -i image.png -filter_complex overlay=main_w-overlay_w-0:0 output_file.mkv

Dann die Zusammenführung:

ffmpeg -i intro.mp4 -i input.mkv -i outro.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[video_out][audio_out]" -map "[video_out]" -map "[audio_out]" output_file.mkv

Antwort1

[v1]Wir können für die Ausgabe temporäre Namen verwenden und diese dann als Eingabe für den Filter overlay=main_w-overlay_w-0:0nutzen :[v1]concat

ffmpeg -i intro.mp4 -i input.mkv -i outro.mp4 -i image.png -filter_complex "[1:v][3:v]overlay=main_w-overlay_w-0:0[v1];[0:v:0][0:a:0][v1][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[video_out][audio_out]" -map "[video_out]" -map "[audio_out]" output_file.mkv


  • Der folgende Teil wendet die Overlay-Phase an:
    [1:v][3:v]overlay=main_w-overlay_w-0:0[v1]
    Die überlagerte Ausgabe erhält den temporären Namen [v1].
  • [0:v:0][0:a:0][v1][1:a:0][2:v:0][2:a:0]concat
    verwendet [v1]als Eingabe für concat(anstelle von [1:v:0]).

verwandte Informationen