Problems obtaining the correct number of frames in video file

K_E · Feb 1, 2022 · 2.1K views
Question
I am having trouble using VideoReader to determine the correct number of frames in a video file,   videoObj = VideoReader('2_1107.mpg') ; Warning: Unable to determine the number of frames in this file. This workaround fails, lastFrame = read(videoObj, inf) Error using VideoReader/read (line 86) The frame index requested is beyond the end of the file. The following code returns a different number of frames each time it's run, e.g. 164, 263, 257. videoObj = VideoReader('2_1107.mpg'); nFrame = 0 ; isGood = true ; while isGood nFrame = nFrame + 1 ; try thisFrame = read(videoObj, nFrame) ; catch isGood = false ; nFrame = nFrame - 1 ; % Don't include in the count if fails end end If VideoReader skipping or repeating frames on each pass through the file, how can I get the correct number of frames? More info: problem is present for both R2012a and R2012b run on Windows 7 (32-bit versions), video format is MPEG-2, size of the video is 65706 KB, and it's a variable frame rate file.
Expert Answer
Profile picture of John Williams
John Williams PhD Expert
Answered Aug 25, 2026

Have you tried something like this:

 

xyloObj = VideoReader('xylophone.mpg');
xylDat = read(xyloObj);
size(xylDat)

For this example, which is the mpg in the link provided, the final value in size is the number of frames. If this does not help, can you do a:

get(videoObj)

and post the results? I would be interested to see what data is missing.

100% Run Guarantee 3-Hour Fast-Track Delivery

Need a Custom Version or Complete Simulation for This Problem?

Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.

Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here

Get a Free Consultation or a Sample Assignment Review!