I am coding in PsychoPy 3.2.2 on Windows 10 using a G-SYNC 120 Hz monitor.
I am trying to display videos in 40 fps, each 1700 ms long (= 68 frames in each video). I am using this loop to show the videos (these are visual.MovieStim3 in an array):
# loop over video array for x in range(len(trialArray)): # collect number of frames in video loop framecount = 0 # start time for measuring video duration video_starttime = core.getTime() # show video and stimuli while trialArray[x].video.status != visual.FINISHED: # draw video trialArray[x].video.draw() # draw monitors monitor_left.draw() monitor_right.draw() # draw images indicated_image.image.draw() ignored_image.image.draw() # start recording frame intervals if trig: win.recordFrameIntervals = True trig = False # add 1 to framecount framecount = framecount + 1 win.flip() # get measured video duration video_duration_measured = (core.getTime() - video_starttime) print("video_duration_measured") print(video_duration_measured) # get video duration per definition in file video_duration = trialArray[x].video.duration # get mean frame interval win.recordFrameIntervals = False mean_frameinterval = np.mean(win.frameIntervals) print("mean_frameinterval") print(mean_frameinterval)
The video_duration_measured variable shows me that the while loop takes approx. 1.7 sec, which is fine. But I am irritated by the framecount variable. I thought each frame-change of the video should be represented by another iteration of the while loop, this is why I would expect the framecount variable to be 68. But actually this is not the case and the iteration count differs a lot from trial to trial (70-101) but is never 68. Maybe I am not understanding the functionality of this while loop correctly. I would be happy if someone has deeper insight into what this while loop does and could help me explain this observation.
Thanks a lot and have a nice day!