ffmpegavconv

Create time lapse video from other video


Using avconv (or even ffmpeg, so I can use as a reference), how can I create a time lapse video by taking only anchor/reference frames from another video? Most information I find is on how to create a time lapse video by combining images, and I'd like to do it by extracting frames from a video. Say, if a video is 30 seconds long at 30 FPS, I'd like to take 60 out of those 900 frames (900/60 = every 15 seconds) to produce a 2 second video.


Solution

  • To take every 15th frame, use the select filter

    ffmpeg -i in.mp4 -vf select='not(mod(n\,15))',setpts=N/FRAME_RATE/TB out.mp4
    

    Another method is to use the framestep filter

    ffmpeg -i in.mp4 -vf framestep=15,setpts=N/FRAME_RATE/TB out.mp4