Entfernen Sie Bewegungsereignisse aus der Datei

1351
BluGeni

Ich arbeite derzeit an einem Zeitrafferprojekt mit ein paar langen Videos, in denen Teile vorhanden sind, an denen nichts passiert, und ich frage mich, ob es ein Programm gibt, das all diese Teile oder alle Bewegungsteile ausreißen und in ein einziges einfügen kann Datei, anstatt mich stundenlang abzuspielen und manuell auszuschalten.

Ich habe gelesen, dass vlc Bewegungen in der Wiedergabe erkennen kann, aber nicht sicher ist, wie man diese nutzen kann. Dies kann eine Lösung für Windows oder Linux sein.

2

1 Antwort auf die Frage

2
NuTTyX

Ich habe einige Experimente mit ffmpegdem mpdecimateFilter 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 setptsund die ersten fpsFilter 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)

mpdecimatewürde die Frames fallen lassen, aber die Länge wird beibehalten. Mit setptszwingen Sie es, eine feste Dauer für jeden Frame zu berechnen, und der erste fpsstimmt mit der "aktuellen" Geschwindigkeit überein, die durch definiert wird setpts. Letztes fpsmacht 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 
Ich bekomme] Kein solcher Filter: 'mpdecimate' Fehler beim Aufteilen der Argumentliste: Option nicht gefunden. Was muss ich tun, um das Problem zu beheben? BluGeni vor 10 Jahren 0
Ich habe Zitate um `[d]` in `-map` verpasst. Als Filter habe ich eine aktuelle Version von ffmpeg verwendet. Könnten Sie versuchen, Ihre zu aktualisieren? NuTTyX vor 10 Jahren 0
ok perfekt, jetzt läuft es, es scheint eine Weile zu dauern, bis es fertig ist. Ich werde zurückkommen, wenn es fertig ist. BluGeni vor 10 Jahren 0
Wenn Sie "-vsync 2" verwenden, können Sie eine VFR-Ausgabedatei erstellen. (Der Standardwert für ffmpeg ist der CFR-Modus für mp4, VFR für mkv). Dann sollten Sie keine Frames mit dem FPS-Filter kopieren. Gute Idee mit Setpts um No-Motion-Abschnitte zu überspringen. Peter Cordes vor 9 Jahren 2
Außerdem sind alle diese Filter 1 Eingang, 1 Ausgang. In diesem Fall benötigen Sie eigentlich nicht filter_complex oder benannte Ein- / Ausgänge. Nur "ffmpeg in.mkv -vf" mpdecimate, setpts = 'N / (5 * TB)' - preset slow out.mkv 'sollte funktionieren. (Sie brauchen nicht -map, da ffmpeg die Ausgabe Ihres Videofiltergrap mappt standardmäßig.) Peter Cordes vor 9 Jahren 1
@ PeterCordes Danke für die Info. Ich habe versucht, doppelte Frames aus einem Screen-Capture eines Web-Films (verdammte proprietäre Plugins mit DRM!) Zu entfernen. Ich konnte nicht verstehen, warum "mpdecimate" für mich nicht funktionierte. Es stellte sich heraus, dass es die ganze Zeit funktioniert hat, aber ich habe mp4-Ausgabe verwendet und ffmpeg würde die doppelten Frames neu erstellen! Ich wandte mich an mkv und das Ergebnis ist perfekt. Tobia vor 9 Jahren 0
Ja, die Standardeinstellung von -vsync ist 2 für mkv, etwas anderes für mp4, wegen eines Fehlers in einem Eckfall für mp4. -vsync 2 arbeitet normalerweise mit mp4, um eine VFR-Ausgabe zu erstellen. Peter Cordes vor 9 Jahren 0