'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 1:[1]

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.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 kesh