ffmpeg überlagert ein Video zu einem bestimmten Zeitpunkt in einer bestimmten Zeit

4086
BOB

Ich habe ein Video mit einer Dauer von 01:30 Min. Und ich habe ein anderes Video mit einer Dauer von 00:50 Sekunden. Ich möchte das zweite Video oben auf dem ersten Video um 00:45 bis 00:50 überlagern

Ich versuche, diesen Befehl zu verwenden, aber er funktioniert nicht

ffmpeg -i D:\ffmpeg\base_video.mp4 -i D:\ffmpeg\top_video.avi -filter_complex "[0:0][1:0]overlay[out]" -shortest -map [out] -map 0:1 -pix_fmt yuv420p -c:a copy -c:v libx264 -crf 18 D:\ffmpeg\final_video.mp4 

Anregungen bitte?

Vielen Dank

2

1 Antwort auf die Frage

1
Gyan

Sie müssen die enableOption verwenden :

ffmpeg -i D:\ffmpeg\base_video.mp4 -i D:\ffmpeg\top_video.avi -filter_complex \ "[0:0][1:0]overlay=enable='between(t\,45,50)'[out]" \ -shortest -map [out] -map 0:1 \ -pix_fmt yuv420p -c:a copy -c:v libx264 -crf 18 D:\ffmpeg\final_video.mp4 

Um den Start des Top-Videos zu verzögern, verwenden Sie den Setpts-Filter.

ffmpeg -i D:\ffmpeg\base_video.mp4 -i D:\ffmpeg\top_video.avi -filter_complex \ "[1]setpts=PTS-STARTPTS+10/TB[top]; [0:0][top]overlay=enable='between(t\,10,15)'[out]" \ -shortest -map [out] -map 0:1 \ -pix_fmt yuv420p -c:a copy -c:v libx264 -crf 18 D:\ffmpeg\final_video.mp4 
Danke @Mulvya, das funktioniert gut, aber es gibt ein anderes Problem, wenn ich das Video von 00:00 bis 00:05 überlagere. Das funktioniert gut. Wenn ich jedoch ein anderes Mal wähle, z. B. 00:10 bis 00:15, wird das letzte Bild nur vom eingeblendeten Bild eingeblendet Das Top-Video, wie wir dieses Problem lösen können BOB vor 8 Jahren 0
Ich denke, das ist der Fall, weil das Video um 00:00 Uhr abgespielt wird und das Top-Video nur zu einem bestimmten Zeitpunkt angezeigt wird. Daher muss das Top-Video erst um 00:10 und nicht um 00:00 wiedergegeben werden BOB vor 8 Jahren 0
Hey Bro, kann ich mehr als ein Video zu einer bestimmten Zeit auf dieselbe Weise überlagern? Ich suche danach, aber ich habe keinen guten Weg gefunden, um dieses Problem zu lösen BOB vor 8 Jahren 0
Fügen Sie einen weiteren Überlagerungsfilter hinzu, wobei die erste Eingabe die Ausgabe des vorherigen Überlagerungsfilters ist, z. B. `[out] [2: v] Überlagerung [out2]` Gyan vor 8 Jahren 0
Danke Bro, ich verstehe diese Lösung, aber kann ich es mit einem Befehl tun? BOB vor 8 Jahren 0