it is probably because the frame rate of the video is detected as 15 fps
I = readFrame(v);
duration = t/v.FrameRate
you could do 2 things
either run another script to convert the frame rate of your video (basically use videowrite, set the right number of frames, load frame by frame and write each from to a new video... or try using some external software to correct the frame rate reading (ffmpeg could work).
I guess matlab is fine but simply the video info is read wrongly.
I found someone having had the same issue
see if it helps