Python 视频在动画片Tim3-PsychoPy制作前不久冻结

Python 视频在动画片Tim3-PsychoPy制作前不久冻结,python,animation,mp4,psychopy,Python,Animation,Mp4,Psychopy,我有一个2 mp4视频序列,播放了4次(4次试验),每个动画前都会出现一个固定十字,如下面的代码所示。 为了加载、播放和绘制动画,我在@richard制作的[这个演示]之后使用了MovieStim3。我使用了函数。play and。draw来播放和绘制电影 但是,在第3次和第4次试用开始时,动画会在移动前冻结3秒钟。这确实有问题,因为它严重影响了动画对参与者感知的影响。任何建议都会很有帮助。提前感谢:微微一笑: # Load optic flow and random flow movies o

我有一个2 mp4视频序列,播放了4次(4次试验),每个动画前都会出现一个固定十字,如下面的代码所示。 为了加载、播放和绘制动画,我在@richard制作的[这个演示]之后使用了MovieStim3。我使用了函数。play and。draw来播放和绘制电影

但是,在第3次和第4次试用开始时,动画会在移动前冻结3秒钟。这确实有问题,因为它严重影响了动画对参与者感知的影响。任何建议都会很有帮助。提前感谢:微微一笑:

# Load optic flow and random flow movies
optic_flow_movie    = visual.MovieStim3(win, 'optic_flow.mp4',loop= False)
random_flow_movie   = visual.MovieStim3(win, 'random_flow.mp4',loop= False)

for trialcount in range(nTrials):

    # We start the timer for each trial
    kb.clock.reset()  

    # Start with fixation cross 
    fixation.draw()
    win.flip()
    core.wait(2)

    # Play the video for 200 frames 

    optic_flow_movie.seek(0)
    random_flow_movie.seek(0)

    for Nframes in range(200):

        if conditions_rand[trialcount] == 1:
            optic_flow_movie.play()
            optic_flow_movie.draw()

        elif conditions_rand[trialcount] == 2:
            random_flow_movie.play()
            random_flow_movie.draw()


        fixation.draw()
        win.flip()

这里甚至需要
.play()
吗?i、 e.
.draw()
就足够了。我不确定这是否会有什么不同,但如果没有函数调用的话,还是值得一试的。@MichaelMacAskill只有在添加了
.play()
之后,我才能在整个试验过程中播放所有的动画。当我只使用
.draw()
时,它只播放了前两个动画,然后冻结在这里-->()@MichaelMacAskill我很久以前也在心理变态论坛上报道过,但我没有得到答案。我应该使用另一个模块来阅读和播放视频吗?有没有一个模块可以很好地与心理变态进行协作呢?MovieStim3通常是最好的,但你可以试着降到MovieStim2或MovieStim以防万一。更有益的是,尝试不同的电影编码,确保像素尺寸不大于它将被播放的大小(以避免不必要的缩放和内存问题),并考虑如果适用的话丢弃帧速率(例如,如果它是60赫兹,那么在30赫兹时它看起来仍然可以接受。”MichaelMacAskill Thx回答。关于电影编码和像素尺寸,我假设它会对所有在试用期间显示的动画产生影响。然而,前两次试验完美展示,冻结效果从第三次试验开始。此外,如果没有函数
play()
,则仅播放前两次试玩。