Wie füge ich mit ffmpeg in den ersten 30 Sekunden eines Videos mein Logo ein?

Wie füge ich mit ffmpeg in den ersten 30 Sekunden eines Videos mein Logo ein?

Ich versuche, mit ffmpeg mein Logo für die ersten 30 Sekunden in ein Video einzufügen. Ich habe ein Video namens d1.mp4und ein Logo namens logo.png.

Wenn das Video startet, sollte das Wasserzeichen in der oberen linken oder oberen rechten Ecke des Videos stehen und nach 30 Sekunden verschwinden.

Können Sie mir bitte zeigen, wie ich es hinzufüge?

Antwort1

ffmpeg -i in.mp4 -framerate 30000/1001 -loop 1 -i logo.png -filter_complex
  "[1:v] fade=out:st=30:d=1:alpha=1 [ov]; [0:v][ov] overlay=10:10 [v]" -map "[v]"
  -map 0:a -c:v libx264 -c:a copy -shortest out.mp4

Dabei wird davon ausgegangen, dass das Logo ein einzelnes Standbild mit einem Alphakanal ist und Sie es über ein Video mit einer Bildrate von 30000/1001 (NTSC-Rate) legen möchten. Ändern Sie das so, -frameratedass es Ihrem Eingabevideo entspricht, falls es anders ist. Wenn Ihr Logo ein Video ist, lassen Sie weg -framerate 30000/1001 -loop 1. Wenn das Logo keinen Alphakanal hat, fügen Sie einen hinzu, indem Sie z. B. format=yuva420p,unmittelbar vor einfügen fade.

Dadurch wird das Logo 30 Sekunden lang an der x,y-Position 10,10 angezeigt und anschließend für 1 Sekunde ausgeblendet.

Antwort2

Verwenden vonoverlayVideofilterSo fügen Sie einem Video ein Logo hinzu:

Bildbeschreibung hier eingeben

ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay" \
-codec:a copy out.mp4

Um diesen Befehl zu verstehen, müssen Sie wissen, was einStream-Spezifiziererist und das Lesen derEinführung in die FFmpeg-Filterungwird helfen. [0:v]bezieht sich auf den/die Videostream(s) des ersten Eingangs ( video.mp4) und [1:v]bezieht sich auf den Videostream des zweiten Eingangs ( logo.mp4). So können Sie feststellen, overlaywelche Eingänge zu verwenden sind. Sie können weglassen [0:v][1:v], und overlayes wird trotzdem funktionieren, aber es wird empfohlen, explizit zu sein und sich nicht auf möglicherweise unbekannte Standardwerte zu verlassen.

Standardmäßig wird das Logo oben links platziert.

Mit -codec:a copyWillenStreamkopiedas Audio. Dadurch wird das Audio einfach neu gemultiplext, anstatt es neu zu kodieren. Betrachten Sie es als ein „Kopieren und Einfügen“ des Audios.

Verschieben des Logos

Dieses Beispiel verschiebt das Logo 10 Pixel nach rechts und 10 Pixel nach unten: Bildbeschreibung hier eingeben

ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=10:10" \
-codec:a copy out.mp4

Dieses Beispiel verschiebt das Logo 10 Pixel nach rechts und 10 Pixel nach unten:

Bildbeschreibung hier eingeben

ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=main_w-overlay_w-10:10" -codec:a copy out.mp4

main_wbezieht sich auf die Breite der „Haupt“-Eingabe (der Hintergrund oder [0:v]) und overlay_wbezieht sich auf die Breite der „Overlay“-Eingabe (das Logo oder [1:v]). Im Beispiel kann dies also mit overlay=320-90-10:10oder übersetzt werden overlay=220:10.

Timing der Überlagerung

Einige Filter könnenTimeline-BearbeitungDamit können Siearithmetische Ausdrückeum zu bestimmen, wann ein Filter angewendet werden soll. Unter ffmpeg -filterserfahren Sie, welche Filter die Bearbeitung der Zeitleiste unterstützen.

In diesem Beispiel wird das Logo 30 Sekunden lang angezeigt:

ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=10:10:enable=between(t\,0\,30)" -codec:a copy out.mp4

Wenn Sie das Logo ausblenden möchten, lesen SieAntwort von mark4o.

verwandte Informationen