心理学研究方法使用PsychoPy编写心理学实验

PsychoPy入门_03_视频和音频的呈现

2016-10-14  本文已影响829人  ChZ_CC

不靠谱PsychoPy入门教程目录:

  1. PsychoPy入门00安装

  2. PsychoPy入门01文字和图片的呈现

  3. PsychoPy入门02按键等待&反应时

  4. PsychoPy入门03视频和音频的呈现

  5. PsychoPy入门04等级评定

  6. PsychoPy入门05循环和随机

  7. PsychoPy入门06数据记录

  8. PsychoPy入门07鼠标的使用

  9. 用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()

有什么疑问或建议请在下方评论。

上一篇下一篇

猜你喜欢

热点阅读