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
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
Related videoreader Questions & Solutions
Browse All →
Explore similar technical troubleshooting questions and verified MATLAB solutions:
Ready-to-Run MATLAB & Simulink Projects
Browse All Projects →