4x Videoframes mit ffmpeg neu abtasten

8

Ich muss das Video um den Faktor 4 beschleunigen, möchte aber die Frames nicht löschen und stattdessen mitteln. Dh jeweils 4 Frames werden gemittelt und erzeugen 1 Output-Frame. Die Zielbildrate bleibt gleich, sodass das Video jetzt viermal schneller ist.

Gibt es eine Möglichkeit, dies in ffmpeg zu tun?

BarsMonster
quelle
3
Können Sie genauer sagen, wie sie "gemittelt" werden sollen? Welche Methode möchten Sie verwenden?
Llogan
@ LordNeckbeard (f1 + f2 + f3 + f4) / 4 - einfache Mittelwertbildung. Daher weist jeder resultierende Frame auf allen Unterframes schwache Spuren der Bewegung auf.
BarsMonster
@BarsMonster Ich bezweifle, dass ffmpeg dies kann. Haben Sie diesen Effekt anders gesehen? Wissen Sie, wie es tatsächlich aussieht?
Jim Mack
@ JimMack Ich habe das derzeit manuell in VirtualDub gemacht, sie haben Interpolationsfilter, mit 0,5x Interpolation werden durchschnittlich 2 Frames gemittelt. Hier ist das Ergebnis: youtube.com/watch?v=8zrws5CGWsI Man kann sehen, dass jeder Frame eine Bewegung von 2 Subframes hat, so dass er etwas glatter ist. Aber dies in einer cmdline zu tun, wäre in Zukunft viel schneller.
BarsMonster
slowmoVideo ist vielleicht einen Versuch wert, aber ich weiß nicht, ob es einen Cli hat. Der FFmpeg- Frameratenfilter scheint eine Interpolation durchzuführen, scheint jedoch nicht Ihren Anforderungen zu entsprechen.
Llogan

Antworten:

8

ffmpeg mit dieser Filterkette macht es:

ffmpeg -i input -vf "tblend=average,framestep=2,tblend=average,framestep=2,setpts=0.25*PTS" -r srcfps -{encoding parameters} output

srcfps sollte durch die Framerate Ihrer Eingabe ersetzt werden.

Gyan
quelle
1
Wird auch für x16 mit "tblend = Durchschnitt, Framestep = 2, tblend = Durchschnitt, Framestep = 2, tblend = Durchschnitt, Framestep = 2, tblend = Durchschnitt, Framestep = 2, Setpts = 0,0625 * PTS"
BarsMonster