So, to compute the timestamp of a frame with variable speed:

* Express your frame rate as a complete formula: t → v

* Integrate it: t → f.

* Find the reciprocal: f → t.

Let's give it a try. My input video has framerate=20 and length=10s.

Let's change the framerate linearly from 20 at the beginning to 10 at the end:
v(t) = 20 - t

After integrating we get  f = 20 * t - 0.5 * t^2

The inverse function is  t = 20 - sqrt(400 - 2 * f)

ffmpeg -f lavfi -i testsrc2=size=vga:duration=10:rate=20 -lavfi "setpts='(20-sqrt(400-2*N))/TB' " -y out.mp4

The resulting video gets slower towards the end, but the length is 18.95s and that can't be correct. With a constant framerate of 10 the length would be 20s. The length should be somewhere wetween 10s and 20s, but not so close to 20s. Something must be wrong.

This is an interesting question and I would highly appreciate if someone could post a working example.

Michael
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to