打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PsychoPy视频刺激和音频刺激

更多技术干货第一时间送达


PsychoPy


Rose小哥是个代码狂,个人喜欢编写代码来实现相关实验设计,因为编写代码来实现实验十分灵活。

PsychoPy安装与测试案例

PsychoPy文字刺激、图片刺激和光栅刺激

这篇主要介绍视频刺激、音频刺激。

视频刺激


1.打开Coder视图

2.如下图在Coder编辑器中,编写代码。

# -*- coding: utf-8 -*-'''视频刺激'''#导入工具from psychopy import visual, core, event
"""用visual.Window创建一个窗口/屏幕来创建想要呈现文字/图片等这些刺激。
visual.Window的参数解析:
size:屏幕分辨率的大小, size=(600,400)color:表示屏幕颜色。(0,0,0)是RGB模式,取值范围是[-1,1],全为-1的话是纯黑色,全为1是白色。当然也可以采用其他方式设置颜色,比如直接用颜色名:color='green'。fullscr:True为全屏,默认值为False不全屏。
"""DISPSIZE=(400,400)win = visual.Window(fullscr = False, size = DISPSIZE, color = (-1.0,-1.0,-1.0))
"""文字刺激TextStim的参数:
win:呈现的屏幕。text:文字内容。u'str',前面加u表示unicode编码,如果是中文的话则需要用u,英文则无需。pos:位置。以屏幕中心(0,0)为坐标中心建一个坐标轴,(x,y)相当于坐标,右/上为正值,左/下为负值。取值范围最好在(-1,1)中间,相当于占位的百分比。color:颜色。bold/italic:是字体的格式,加粗/倾斜。"""msg1 = visual.TextStim(win, text = u'视频刺激', height = 0.12, pos = (0.0,0.2), bold = True, italic = False, color = 'pink')
#呈现文字刺激"""stimName.draw()用来绘制刺激内容。win.flip()用来刷新屏幕。
括号里是秒数,可以是整数也可以是小数。使程序保持这个状态停留3秒.core.wait(3)
说明:用core.wait(n)控制时间是比较粗糙的,误差比较大。可以用core.clock()严格控制时间的刺激呈现。"""msg1.draw()win.flip()core.wait(3)
#视频刺激video1 = visual.MovieStim(win, 'aa.mp4')video1.size *= 0.7#播放视频"""循环绘制视频帧判断视频播放状态,如果未到视频最后,则继续循环。"""while video1.status != visual.FINISHED: video1.draw() win.flip() # 如果按Esc键则退出播放 if event.getKeys(keyList = ['escape']): video1.pause() break"""关闭窗口,退出程序。"""win.close()core.quit()

音频刺激


PsychoPy中并没有专门的音频刺激方法,在上面我们知道视频刺激有对应的方法MovieStim。我们可以通过利用MovieStim来实现音频刺激。

方法:将音频文件转换为视频文件即可。比如将mp3转换为avi或者mp4。

代码程序与上面视频刺激一样。

过程中遇到的奇葩问题


在使用PsychoPy来设计视频刺激实验时,遇到奇怪的问题:

在同一段代码在PsychoPy Coder视图中来运行出现的是下面的问题:

'AVbin is required to decode compressed media’)

pyglet.media.riff.WAVEFormatException: AVbin is required to decode compressed media

而在Pycharm中出现的是下面的问题:

pyglet wave.Error: file does not start with RIFF id

经分析出现这两个问题的原因都是系统中缺少音视频的解码器。只不过PsychoPy Coder中默认采用的是AVbin来解码。而在Pycharm调用的是pyglet推荐的ffmpeg来解码。

两个问题的解决方法都是,安装需要的工具库来进行解码。

说明:这里的系统都是windows,其他系统类似。

针对在PsychoPy Coder出现的问题:

'AVbin is required to decode compressed media’)

pyglet.media.riff.WAVEFormatException: AVbin is required to decode compressed media

解决方法:

根据系统要求下载并安装对应AVbin:

AVbin官网:http://avbin.github.io/AVbin/Download.html

针对在Pycharm中出现的问题:

pyglet wave.Error: file does not start with RIFF id

解决方法:

到ffmepg官网下载对应系统的对应版本:

ffmpeg官网:https://ffmpeg.zeranoe.com/builds/

由于本人安装的是shared版本,解压即可使用[但需要配置]。

配置:直接在系统环境变量中配置存放路径

更多阅读

EEG信号特征提取算法

EEMD算法原理与实现

EMD算法原理与实现
EEGNet: 神经网络应用于脑电信号

信号处理之倒频谱原理与python实现

信号处理之功率谱原理与python实现

脑电信号滤波-代码实现

运动想象系统中的特征提取算法和分类算法

特征提取算法 | 共空间模式 Common Spatial Pattern(CSP)

功率谱估计-直接法原理与案例

MNE中文教程(16)-脑电数据的Epoching处理

DEAP数据库介绍--来自于音乐视频材料诱发得到的脑电数据

PsychoPy安装与测试案例

PsychoPy文字刺激、图片刺激和光栅刺激

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Visual Studio2019及.NET CORE3.0的安装教程
第0期:psychopy coder入门
WPF中的视频和音频byxirihanlin幸福像花儿一样开放
ProMedia Carbon(先前的Carbon Coder 自动化媒体转码器
如何在PPT中插入动画、视频、音频、解说
Visual Studio 2015 和.NET Core 安装
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服