Da Sie mit einigen Ungenauigkeiten einverstanden sind, empfehle ich folgende Methode:
Segmentieren Sie den Videoeingang
ffmpeg -i beach.mp4 -c copy -segment_time 20 -f segment beach_seg%02d.mp4
Overlay-Logo im ersten Segment
ffmpeg -i beach_seg00.mp4 -loop 1 -i logo.png -filter_complex "[0:v][1:v] overlay=25:25:shortest=1" -pix_fmt yuv420p -c:a copy overlay.mp4
Concat-Segmente
Bereiten Sie zuerst eine Textdatei vor segments.txt
file 'overlay.mp4' file 'beach_seg01.mp4' file 'beach_seg02.mp4' file 'beach_seg03.mp4' ...
Dann concat
ffmpeg -f concat -i segments.txt -c copy beach_with_logo.mp4
Der Nachteil hierbei ist, dass die Zeitbasis von overlay.mp4 möglicherweise nicht mit der der Strandsegmente übereinstimmt. Überprüfen Sie in diesem Fall die Zeitbasis eines der Strandsegmente (das tbn
) und fügen Sie -video_track_timescale <tbn>
den Overlay-Befehl hinzu.