Framerate conversion

It is possible to convert a video with framerate X to a video with framerate Y. There are 2 methods: conform = the total number of frames remains the same, they are just played slower or faster to accommodate the new framerate. interpolate = the total duration of the video remains the same, but frames are added or dropped to match the new framerate.

Input duration

Seconds
1500 frames
60 sec(s)
Minutes
60 secs / 60
1 min(s)

Conversion 'conform': 25 → 24fps

Definition
The total # of frames stays the same
1500 frames
Speed
video is slowed down from 25 to 24 fps
-4%
Audio
As a result, the audio will sound lower
Correct audio
pitch up by +4.167% (0.707 semitones)
104.17%
Convert video
ffmpeg -i [input] -r 24 -filter:v "setpts=1.0417*PTS" -y [output]
Convert audio
sox [input] [output] tempo 0.96
ffmpeg -i [input] -filter:a "atempo=0.96" -vn [output]
Duration: time
1500 frames / 24 fps
62.50 sec

Conversion 'interpolate': 25 → 24fps

Definition
The total duration stays the same
60 sec
New length
60 seconds * 24 fps
1440 frames
Naive conversion
drop a frame every
25 frames
Convert video
ffmpeg -i [input] -r 24 -y [output]
Convert audio
audio stays exactly the same

Explanation

  • Calculate # frames from time duration and vice versa. e.g. 93 sec @ 24fps = 2232 frames
  • Calculate how audio and video should be manipulated to change from one framerate to another, using sox and/or ffmpeg
  • When is this necessary? If you have a video that was recorded in 25fps(PAL) or 30fps(NTSC), and you want to show it on a cinema screen: you have to convert the framerate to 24 fps.