Hi all,
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!