0

Variable frame rate (or VFR) is a term in video compression for a feature supported by some container formats which allows for the frame rate to change actively during video playback, or to drop the idea of frame rate completely and set individual timecode for each frame.

So I understand this concept. But there's a myriad of questions this brings up, and most of the info pads are stubs:

  1. Are all decimal fps vfr; can integer fps be vfr? Or is it specific to how the video was made, like when you record your screen with OBS and set the fps to 30, but get a decimal 29.777? Does vfr really only exist on real-life recorded video, but 3d/2d animation wouldn't have vfr? I don't see what being a decimal has to do with the definition, any integer value could fit it as well. I know you can use -vfrdet in ffmpeg to tell if something is vfr...but if all vfr are decimal then what's the point, why not just check the fps instead.

  2. If you re-encode vfr video at the same fps, will the output still retain the same speed and number of frames or is there going to be some kind of data loss (outside of codec-quality-loss) that differs from constant fps? Does playback of a vfr video show ALL the frames or does it tend to skip frames (lets assume hardware is working perfectly)?

  3. Why do video editors not 'all' support non-integer fps values? I mean anything I can express as a fraction of integers, should be available as an fps input setting imo...otherwise that defeats the point of "video editing". What exactly is the rationale for these supposed fully loaded video editors to limit you to only 5 preset fps i.e. (30/60/24/23.97/25). I'm even more confused cause some video editors, while they say they support 60fps, only support 60fps timeline editing... and the output's support fps value is listed (before you even export!) as 59.94 and I see OFFICIAL tutorial videos telling me and everyone that 59.94 is the same as 60. I'm not sure if that's related to vfr, or something else.

  4. Is the fps value of a vfr just the average fps across the entire video? Or is it some more advanced means of averaging/calulating? What is even the role of having a singular listed 'average' fps in a vfr video? THe definition states the video is independent of any one fps...is there some kind of special data packet that tells the video player to playback the video in a certain way such that some parts are faster/slower in the desired fashion? Can't vfr technically mean the start of a video plays at 60 fps and the last 10 seconds play at 5 fps? How would a video player know to play the start at 60 fps...and the end at 5fps...if it only has 1 number to go off of.

2 Answers 2

4
  1. Are all decimal fps vfr; can integer fps be vfr?

No, a fractional number of frames per second can still be constant. For example NTSC (the US television standard) is a constant frame rate of 29.97 (often represented as 30000/1001) frames per seconds.

Does vfr really only exist on real-life recorded video, but 3d/2d animation wouldn't have vfr?

The content is irrelevant. Animation tends to be created with a specific frame rate in mind. But there is no reason that must be the case.

I don't see what being a decimal has to do with the definition

Nothing.

why not just check the fps instead.

What is "checking the fps" what does that even mean (see point 4)

  1. If you re-encode vfr video at the same fps,

It totally depends on HOW you encode and how the tool you use to encode works. Most tools will passthrough whatever comes in to the output not modifying frame rate (unless you tell it to)

Does playback of a vfr video show ALL the frames or does it tend to skip frames

Depends on the device. For example, If your tv is 60Hz and you encode 61 fps it CANT display every frame, But If the content averages 60Fps, but it bursts to 62, the TV may spread out the frame evenly and display them all, or it may drop two frames, and later repeat 2 frames. Every display is different, and there is no rule on what it should do.

  1. Why do video editors not 'all' support non-integer fps values?

You will need to ask the creator of those tools. There is no reason other than laziness, cost or simplicity that would prevent such a feature in any tool.

To expand on the simplicity point, in many cases the frame rate the user asks for is just not possible. For example RTMP uses 1khz clock, meaning even 30fps CFR is not possible (30 does not divide evenly into 1000, it becomes 30 fps AFR with two thirds of frames being 33ms long and one third 34ms long), If the UI has a ratio where the user can type in any value they want for frame rate, they will very often end up with a result they didn't expect due to limitation of the video format they chose.

telling me and everyone that 59.94 is the same as 60 It is absolutely not the same thing. In most cases it won't matter, And for internet video, it will never matter, but for some broadcast TV workflows, frame rates must often be exact for the different pieces of equipment to work together.

  1. Is the fps value of a vfr just the average fps across the entire video?

There is no standard on how top calculate average frame rate. The software my just read a value out of the header, it may calculate the average of the first few seconds, or it may calculate the frame rate over the whole file. Every tool works differently.

What is even the role of having a singular listed 'average' fps in a vfr video?

connivence.

is there some kind of special data packet that tells the video player to playback the video in a certain way such that some parts are faster/slower in the desired fashion?

No, every frame has a time stamp associated with it. The player just displays a frame until it's time to display the next frame. It speeds up and slows down on every single frame.

Can't vfr technically mean the start of a video plays at 60 fps and the last 10 seconds play at 5 fps?

Yes

How would a video player know to play the start at 60 fps...and the end at 5fps...if it only has 1 number to go off of.

It doesn't have 1 number to go off of. It has 1 number per frame.

7
  • This unfortunately raises more q's. Is there a method or process from which to 'deal' with vfr? Specifically when editing/re-encoding it? I see alot of threads saying: to convert vfr to constant framerate u just 'speedchange' the fps to an integer value....but all we're doing is re-encoding in that case right? So is re-encoding via changing fps going to change it from vfr to cfr even though fps has nothing to do with it being vfr? I can't find much info via google on vfr. If vfr works by having 1 number per frame (the speed to play that frame at), is there no way to see these numbers?
    – kite
    Commented Oct 20, 2019 at 5:14
  • When a vfr video goes into a video editor. Does the editor convert the video data to frames played at the 'inaccurate' fps of the vfr and 'throwout' the true speed number per frame? Or does it retain it...and it only throws it out if u make it into an image format....I don't even know how to phrase the question at this point. Would appreciate anymore insight/information that can be provided.
    – kite
    Commented Oct 20, 2019 at 5:17
  • There are many ways of “dealing with it”. But it totally depends on what your end goal is. You can encode without changing frame rate, and it’s not a problem for most players. Change VFR to CFR is more that “just reencoding” it means duplicating frames, dropping frames and sometimes creating new frames. Of course you can see the numbers (if by numbers you mean timestamps). Use ffprobe -show_packets
    – szatmary
    Commented Oct 20, 2019 at 5:22
  • Every piece of software, every video editor, is different. You need to check with the creator of the software to know exactly how it handle each case. Most are best effort. I think you are looking for a level of precision and certainty that doesn’t actually exist in the really world.
    – szatmary
    Commented Oct 20, 2019 at 5:26
  • So for the sake of simplicity: If I had to edit/re-encode a bunch of vfr recorded videos together....and they are synced at the same 'listed fps' so there's no audio sync issue, do I need to be concerned about playback issues? Taking frames from 1 vfr video...and combining with frames from another vfr....should I be doing something to check to make sure its not playing them at different speeds than the original? Say I''m mixing two vfr videos into 1 video where I play 5 seconds of video one, then 5 seconds of video 2, and repeat this for the duration of the two videos combined.
    – kite
    Commented Oct 20, 2019 at 5:36
0

VFR, is a term wildly used in video recording. As the name suggests, if a video is recorded in VFR mode, the camera will automatically adjust the frame rate according to what's going on in the scene. If you happen to be one of those who encounter an VFR issue in Adebe Premiere, don't waste your time on searching and trying complex troubleshooting methods in vain, transcoding VFR video to CFR/constant frame rate is the jack-of-all-trades. And along with some help from third-party program liek the easy but pro-grade DumboFab Video Converter,, you can effortlessly convert the video with the variable frame rate to Premiere Pro, Sony Vegas, etc. highly comaptible video with constant frame rate.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .