Ich habe einige Experimente mit ffmpeg
dem mpdecimate
Filter gemacht.
Die Ausgabe ist ein Video mit nur den "aktiven" Teilen und ich habe einige Tricks mit dem FPS verwendet.
Der Ausgang wird mit 25 Bildern pro Sekunde für den Player abgespielt, ist jedoch mit 5 Bildern pro Sekunde reallity (stellen Sie die Zahl 5 in beiden setpts
und die ersten fps
Filter ein, um die Geschwindigkeit anzupassen. Wenn 25 Bilder pro Sekunde für Sie gut sind (mein Testvideo zeigte für mich zu schnelle Änderungen), lassen Sie den letzten fallen filtern und -map [c]
stattdessen verwenden.
Wenn Sie den Schwellenwert anpassen müssen, schauen Sie hier : (zB mpdecimate=hi=64*12:lo=64*8:frac=0.33
)
mpdecimate
würde die Frames fallen lassen, aber die Länge wird beibehalten. Mit setpts
zwingen Sie es, eine feste Dauer für jeden Frame zu berechnen, und der erste fps
stimmt mit der "aktuellen" Geschwindigkeit überein, die durch definiert wird setpts
. Letztes fps
macht es "abspielbar" (fügt doppelte Frames ein, um das 25fps-Video zu füllen), (5fps-Video auf meinem VLC lässt sich nicht gut abspielen, friert gelegentlich ein)
ffmpeg -y -i input.mp4 -filter_complex "[0:v] mpdecimate [a] ; [a] setpts='N/(5*TB)' [b] ; [b] fps=5 [c] ; [c] fps=25 [d]" -map "[d]" -c:v libx264 ouput.mp4