Problems obtaining the correct number of frames in video file

Illustration
K_E - 2022-02-01T12:35:14+00:00
Question: Problems obtaining the correct number of frames in video file

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 answered . 2025-11-20

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.


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!