
Mithilfe von ffmpeg mit -ss, -t und -tpad versuche ich, eine Reihe von Clips auf eine feste Länge von insgesamt 6 Sekunden zu kürzen: 2 Sekunden Handle am Anfang + 2 Sekunden interessantes + 2 Sekunden Nachlauf am Ende. Leider haben einige meiner Eingabeclips keine 2 Sekunden Nachlauf am Ende oder Anfang, also versuche ich, sie mit tpad aufzufüllen (sodass die Ausgabe immer 6 Sekunden beträgt). Das funktioniert irgendwie, aber jetzt habe ich meine zwei interessanten Sekunden immer am Anfang – nicht in der Mitte, wie ich es möchte. Wie kann ich das beheben?
Bonusfrage: Derzeit wird mit Schwarz aufgefüllt. Wie könnte die Farboption stattdessen das erste/letzte Videobild als Standbild verwenden?
Der Code, den ich verwende (wird von Python aufgerufen, sollte aber für die Filterkette keinen Unterschied machen):
filterchain = "[0:v]tpad=stop=-1,trim=end=6,scale='if(gt(a,1/1),-1,480)':'if(gt(a,1/1),480,-1)',setsar=1,crop=480:480"
subprocess.call(['ffmpeg', '-ss', str(inpoint-2), '-t', '6',
'-i', input_clip, '-filter_complex', filterchain, '-r', '25',
'-c:v', 'prores', '-profile:v', '1', '-c:a', 'pcm_s16le',
'-ar', '48000', "-hide_banner", '-loglevel', 'error', output])