MATLAB Answers

VideoReader framerate is not matching total number of frames

38 views (last 30 days)
Hazem
Hazem on 7 Nov 2014
Commented: Walter Roberson on 31 Jan 2018
I use VideoReader command to find the frames per second (FPS) for a recorded video
Obj=VideoReader('Movie1');
Here are some of the data of interest I get
Obj.Duration=120.9370 % total video duration
Obj.FrameRate=29.4492 % Frame rate Meta data
Obj.NumberOfFrames=3552 % Total frames
The problem is that the
Obj.FrameRate=29.4492 is not equal to
Obj.NumberOfFrames/Obj.Duration=29.3707.
This difference is very significant for my problem,so
1- Which value is more reliable?
2- What is the reason behind this inconsistency?
Many Thanks,

  0 Comments

Sign in to comment.

Answers (2)

Tommaso Lucarelli
Tommaso Lucarelli on 19 Dec 2016
Hello Hazem,
I'm working on a project and I have found exactly the same issue, I'm facing this problem and I don't know how to find a solution.
Did you find a way to fix it at the end? This difference is very significant for my problem.
Thanks a lot, have a nice evening,
Tommaso

  0 Comments

Sign in to comment.


Kris Fedorenko
Kris Fedorenko on 31 Jan 2018
I believe "FrameRate" is not guaranteed to be constant throughout the playback. This should give you a more accurate value:
vobj = VideoReader('mymovie.avi');
numFrames =vobj.NumberOfFrames
vobj = VideoReader('mymovie.avi'); % need to re-instantiate after computing NumberOfFrames

  1 Comment

Walter Roberson
Walter Roberson on 31 Jan 2018
NumberOfFrames is estimated from the known duration and initial frame rate, and is known to have round-off problems even for fixed framerate images.

Sign in to comment.

Sign in to answer this question.