无法跨试验播放 MP4 视频序列

Posted

技术标签:

【中文标题】无法跨试验播放 MP4 视频序列【英文标题】:Fail to play sequence of MP4 videos across trials 【发布时间】:2020-06-17 08:28:24 【问题描述】:

我有 10 次试验和两个条件(在试验中随机分配),包括播放光流 mp4 电影或随机流 mp4 电影。为了加载和播放 mp4,我使用了 visual.MovieStim3

nBlocks = 4
nTrials = 10

nb_conditions = np.arange(1,3) # We have two conditions : condition 1 is Optic flow and condition 2 is Random flow

conditions = nb_conditions.repeat(nTrials/2) # 5 times condition1 and 5 times condition2

conditions_rand = np.random.permutation(nb_conditions) # Randomize the order of the conditions

# --- Load optic flow and random flow movies ---

optic_flow_movie = visual.MovieStim3(win, ‘optic_flow.mp4’)
random_flow_movie = visual.MovieStim3(win, ‘random_flow.mp4’)

# --- iterate through trials and play movies---

for trialcount in range(nTrials):

   for Nframes in range(700):

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


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

       win.flip()
win.close()

它开始播放 conditions_rand 数组上的第一个视频,然后以随机的时间间隔显示第二个视频,然后屏幕在冻结时再次长时间黑屏。因为它不会抛出任何错误,所以我不知道它为什么会这样。非常感谢您的帮助!

【问题讨论】:

您的代码看起来不错 - 不幸的是,这些电影播放性能问题通常与操作系统/显卡/您使用的 MovieStim 类的版本之间的交互有关。在此处的支持论坛上报告了一个类似的问题:discourse.psychopy.org/t/… 我认为解决方案是在每次播放之前重新实例化电影,但在您的情况下,这会引入时间故障,因为您需要电影立即交替从一个到另一个。可能值得在该论坛上发布此内容 同样对于性能问题,重要的是视频的像素尺寸不大于正在播放的窗口的像素尺寸,否则只会浪费内存和处理周期。可能不是这样,但只是想我会检查一下。 最后,只有一个可能的编码建议:在两个 for 循环之间插入 optic_flow_movie.seek(0)random_flow_movie.seek(0),这样电影在再次播放之前会重新设置到它们的起始帧。 @MichaelMacAskill 将建议的两条线放在 for 循环之间解决了问题,非常感谢您的帮助! 感谢您的反馈,很高兴这有效。评论可以随时删除,所以我现在将其发布为答案,作为未来读者的指南。 【参考方案1】:

尝试插入:

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

在两个 for 循环之间,因此每部电影在再次播放之前都会重置为其起始帧。

【讨论】:

安装最新版本的 PsychoPy 后,我遇到了同样的问题。我有 10 次试验,两个视频随机交替。试了两次后,窗口冻结,没有报错。 我发现在每个条件下播放正确数量的电影重复的唯一方法是在optic_flow_movie.draw() 之前添加optic_flow_movie.play(),在random_flow_movie.draw() 之前添加random_flow_movie.play()。通过添加.play(),会出现另一个问题,即视频在每次试验中动画化之前都会冻结 2 秒。我真的很感谢这个问题的帮助,我尝试了很多东西,但我仍然卡住了......谢谢:)

以上是关于无法跨试验播放 MP4 视频序列的主要内容,如果未能解决你的问题,请参考以下文章

mp4视频无法播放

Mp4 视频无法在 iPad 中播放

无法在 Angular 7 中播放 MP4 视频

Android MP4Parser 无法播放视频

如何在 android 的 videoview 中播放 .mp4 视频?

解决部分mp4视频在ios上无法播放问题