不靠谱PsychoPy入门教程目录:
PsychoPy入门00安装
PsychoPy入门01文字和图片的呈现
PsychoPy入门02按键等待&反应时
PsychoPy入门03视频和音频的呈现
PsychoPy入门04等级评定
PsychoPy入门05循环和随机
PsychoPy入门06数据记录
PsychoPy入门07鼠标的使用
用PsychoPy做视觉搜索任务实验
诶,这次说一下视频和音频的呈现。(这部分可用性较差,随意参看一下吧。)
把上一篇中的代码拿过来,删去图片部分,把文字呈现时间改回两秒。我们的开始代码是这样的:
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#示例3
'''
视频和音频的呈现
'''
#载入所需要的库
from psychopy import visual, core, event
#创建窗口
win = visual.Window(fullscr = False,
size = (1000,600),
color = (-1.0,-1.0,-1.0))
#文字
text_1 = visual.TextStim(win, text = u'示例3',
height = 0.12,
pos = (0.0,0.2),
bold = True,
italic = False,
color = 'pink')
text_2 = visual.TextStim(win, text = u'',
height = 0.1,
pos = (0.0,-0.2),
bold = True,
italic = False,
color = 'violet')
text_2.text= u'视频和音频'
#呈现文字刺激
text_1.draw()
text_2.draw()
win.flip()
core.wait(2)
win.close()
core.quit()
呈现刺激的方法呢基本上都差不多,先建个刺激,然后draw()。视频和文字图片的差别在于它有变化,需要连续呈现。直接来看代码吧。
#视频刺激
mov_1 = visual.MovieStim(win, 'mov_1.avi')
mov_1.size *= 0.7
#播放视频
while mov_1.status != visual.FINISHED:
mov_1.draw()
win.flip()
if event.getKeys(keyList = ['escape']):
mov_1.pause()
break
这里用来呈现视频的是visual.MovieStim(),括号里是它的各项参数。参数的含义和设置方法参见官网手册movieStim()。刚去瞄了一眼,官网把这一项删掉了,为啥呢?
不过程序还可以跑,接着说一下吧。视频和脚本放在同一文件夹下。视频格式最好转成常用的格式。
视频的呈现用到一个while循环,没有结束之前持续播放。在循环里设置一个退出键,这个是必须的,不然跳不出来。我用了escape键,就是左上角那个ESC。
音频的话并没有一个专门的函数,如果确实需要播放音频,就把mp3格式转为avi格式来播放。方法跟上面视频呈现完全一样。
整体代码如下:
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#示例3
'''
视频和音频的呈现
'''
#载入所需要的库
from psychopy import visual, core, event
#创建窗口
win = visual.Window(fullscr = False, size = (1000,600),
color = (-1.0,-1.0,-1.0))
#文字
text_1 = visual.TextStim(win, text = u'示例3', height = 0.12, pos = (0.0,0.2), color = 'pink')
text_2 = visual.TextStim(win, text = u'', height = 0.1, pos = (0.0,-0.2), color = 'skyblue')
text_2.text= u'视频和音频'
#呈现文字刺激
text_1.draw()
text_2.draw()
win.flip()
core.wait(2)
#视频刺激
mov_1 = visual.MovieStim(win, 'mov_1.avi')
mov_1.size *= 0.7
#播放视频
while mov_1.status != visual.FINISHED:
mov_1.draw()
win.flip()
if event.getKeys(keyList = ['escape']):
mov_1.pause()
break
#音频刺激
mov_2 = visual.MovieStim(win, 'audio.avi' )
mov_text = visual.TextStim(win, text = u'音频播放中')
while mov_2.status != visual.FINISHED:
mov_2.draw()
mov_text.draw()
win.flip()
if event.getKeys(keyList = ['escape']):
break
win.close()
core.quit()
有什么疑问或建议请在下方评论。