Search code examples
ffmpegvideo-processingframe-rate

FFmpeg change video speed with -r vs -filter and setpts


If I want to change the video speed with ffmpeg,

what exactly is the difference changing the fps:

ffmpeg -y -r 10 -i video.mp4 video_new_fps.mp4

or using filter and setpts:

ffmpeg -i video.mp4 -filter:v "setpts=PTS*3" -an video_new_fps.mp4

It seems that with both options I can speed up or slow down the video.

So which one should be used in which case?


Solution

  • IMO, the latter is a universal safer approach. If the input video stream uses a constant framerate, then both should result in the identical output. If the input framerate is variable, -r input option will mess up the timing, I presume.