将视觉时间标记添加到视频的播放器栏
Adding visual time markers to the player bar of a video
我正在尝试编写一个实验,我想在其中找出人类如何认知分割运动流。例如,如果运动流可以是一个人在爬一段楼梯,那么每一步都可以是一个单独的片段。
这项研究基本上是对这里的这项研究的复制,但有另一组刺激:http://dl.acm.org/citation.cfm?doid=2010325.2010326
每个试验的结构应如下所示:
展示动态流的视频。在视频下方显示一个带有与视频当前时间同步移动的标记的条(非常类似于视频播放器的 GUI)。
再次展示该视频,但现在让参与者通过按键将固定标记添加到视频下方的栏中。标记应该放置在视频栏中与按下按钮的时间相对应的时间点(例如,当视频长 100 秒并且在视频中按下按钮 10 秒时,它应该放置在柱线的 10% 标记)。
我的导师建议使用 PsychoPy 对整个过程进行编程。 PsychoPy 目前仅支持 Python 2.7。
我研究了该程序,它看起来很有希望。一个人可以很容易地显示一个视频, rating scale class 类似于我们要实现的栏。但是,缺少几个功能,即:
- 一个人只能设置一个标记,被试应该可以设置多个
- 如第 (1) 点所述,我们希望有一个与视频同步移动的标记。
- 发生按键时,应将标记放置在与视频中当前时间点对应的栏中的点。
因此我的问题是:对于使用 PsychoPy 模块实现上述功能,您有什么技巧吗?
我不知道这在多大程度上涉及推荐问题领域,但如果您知道一个用于编写实验 GUI 的模块,其中的小部件具有我们想要用于此实验的功能,我很想听听它们.
PsychoPy 是一个不错的选择。然而,评级量表(正如您所注意到的)可能不是创建标记的正确工具。不过,您可以制作简单的多边形形状,它可以作为您的多个标记以及连续时间指示器。
例如您可以制作一个具有三个顶点的多边形刺激(以制作三角形指示器)并将其位置设置为如下所示(假设您使用的是归一化坐标):
$[((t/movie_duration) * 2 - 1) , -0.9]
t
是一个 Builder 变量,表示当前试验中经过的时间(以秒为单位)。屏幕中心位于坐标 [0, 0]
。所以上面的代码会让指针从屏幕的左手边平滑地移动到右手边,靠近屏幕的底部边缘,一旦移动结束就到达右手边。将多边形的位置字段设置为更新每一帧,以便动画连续。
movie_duration
是电影持续时间的占位符变量(以秒为单位)。您可以在您的条件文件中指定它,或者您可以查询电影组件以获取我认为的持续时间,例如:
$[((t/movie_stim_name.duration()) * 2 - 1) , -0.9]
您可以以类似的方式在屏幕上留下标记以响应按键,但这需要在代码组件中添加一些 Python 代码。
我正在尝试编写一个实验,我想在其中找出人类如何认知分割运动流。例如,如果运动流可以是一个人在爬一段楼梯,那么每一步都可以是一个单独的片段。 这项研究基本上是对这里的这项研究的复制,但有另一组刺激:http://dl.acm.org/citation.cfm?doid=2010325.2010326
每个试验的结构应如下所示:
展示动态流的视频。在视频下方显示一个带有与视频当前时间同步移动的标记的条(非常类似于视频播放器的 GUI)。
再次展示该视频,但现在让参与者通过按键将固定标记添加到视频下方的栏中。标记应该放置在视频栏中与按下按钮的时间相对应的时间点(例如,当视频长 100 秒并且在视频中按下按钮 10 秒时,它应该放置在柱线的 10% 标记)。
我的导师建议使用 PsychoPy 对整个过程进行编程。 PsychoPy 目前仅支持 Python 2.7。 我研究了该程序,它看起来很有希望。一个人可以很容易地显示一个视频, rating scale class 类似于我们要实现的栏。但是,缺少几个功能,即:
- 一个人只能设置一个标记,被试应该可以设置多个
- 如第 (1) 点所述,我们希望有一个与视频同步移动的标记。
- 发生按键时,应将标记放置在与视频中当前时间点对应的栏中的点。
因此我的问题是:对于使用 PsychoPy 模块实现上述功能,您有什么技巧吗?
我不知道这在多大程度上涉及推荐问题领域,但如果您知道一个用于编写实验 GUI 的模块,其中的小部件具有我们想要用于此实验的功能,我很想听听它们.
PsychoPy 是一个不错的选择。然而,评级量表(正如您所注意到的)可能不是创建标记的正确工具。不过,您可以制作简单的多边形形状,它可以作为您的多个标记以及连续时间指示器。
例如您可以制作一个具有三个顶点的多边形刺激(以制作三角形指示器)并将其位置设置为如下所示(假设您使用的是归一化坐标):
$[((t/movie_duration) * 2 - 1) , -0.9]
t
是一个 Builder 变量,表示当前试验中经过的时间(以秒为单位)。屏幕中心位于坐标 [0, 0]
。所以上面的代码会让指针从屏幕的左手边平滑地移动到右手边,靠近屏幕的底部边缘,一旦移动结束就到达右手边。将多边形的位置字段设置为更新每一帧,以便动画连续。
movie_duration
是电影持续时间的占位符变量(以秒为单位)。您可以在您的条件文件中指定它,或者您可以查询电影组件以获取我认为的持续时间,例如:
$[((t/movie_stim_name.duration()) * 2 - 1) , -0.9]
您可以以类似的方式在屏幕上留下标记以响应按键,但这需要在代码组件中添加一些 Python 代码。