Convert high -speed video to normal by subsampling frames

ffmpegframeratevideovlc-media-player

I've found any number of commercial apps that can convert, e.g., 120fps "slow motion" videos to 30 fps by writing every n-th frame to a new video file. I was hoping that the usual freeware tools such as VLC or handbrake or ffmpeg could do this for me, but I admit to being unable to track down the commands to do so. I found any number of ways to export every n-th frame to a collection of image files, but I'd sure rather not have to do that and follow by merging hundreds or thousands of jpgs into a new video file.

I did find thistime-lapse answer which uses setpts so if that's all I need to do, please tell me (with or without the "you dope" part 🙂 ).

Best Answer

If you want to keep real-time i.e. 1 second of live action is played out in 1 second of video then

ffmpeg -i input.mp4 -r 30 output.mp4

This will drop 3 out of every 4 frames.

If you want to preserve all frames but cycle through them slowly then

ffmpeg -i input.mp4 -vf setpts=4*PTS -r 30 output.mp4
Related Question