Video Playback: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
| Line 2: | Line 2: | ||
This page outlines some best practices; however, we advise to always consult a TSG member if you plan to run a video experiment in the labs. | This page outlines some best practices; however, we advise to always consult a TSG member if you plan to run a video experiment in the labs. | ||
==Video playback== | |||
=== Python === | |||
Example demonstrating how to play a video with audio: | |||
<syntaxhighlight lang="python" line> | |||
from psychopy import logging, prefs | |||
logging.console.setLevel(logging.WARNING) | |||
prefs.hardware['audioLib'] = ['PTB'] | |||
prefs.hardware['audioLatencyMode'] = 2 | |||
from psychopy import visual, core, event | |||
from psychopy.hardware import keyboard | |||
# File paths for video and audio | |||
video_file = "tick_rhythm_combined_30min.mp4" | |||
win = visual.Window(size=(1024, 768), fullscr=False, color=(0, 0, 0)) | |||
video = visual.VlcMovieStim( | |||
win, filename=video_file, | |||
autoStart= False | |||
) | |||
kb = keyboard.Keyboard() | |||
# Play the video | |||
win.flip() | |||
core.wait(3.0) | |||
video.play() | |||
video_start_time = core.getTime() | |||
# Main loop for video playback | |||
while video.status != visual.FINISHED: | |||
# Draw the current video frame | |||
video.draw() | |||
win.flip() | |||
keys = kb.getKeys(['q'], waitRelease=True) | |||
if 'q' in keys: | |||
break | |||
win.close() | |||
core.quit() | |||
</syntaxhighlight> | |||
Example demonstrating how to play a video with audio disconected: | |||
<syntaxhighlight lang="python" line> | |||
from psychopy import logging, prefs | |||
logging.console.setLevel(logging.DEBUG) | |||
from psychopy import visual, core, sound, event | |||
import time | |||
prefs.hardware['audioLib'] = ['PTB'] | |||
prefs.hardware['audioLatencyMode'] = 2 | |||
# File paths for video and audio | |||
video_file = "tick_rhythm_30min.mp4" | |||
audio_file = "tick_rhythm_30min.wav" | |||
win = visual.Window(size=(1280, 720), fullscr=False, color=(0, 0, 0), units="pix") | |||
video = visual.VlcMovieStim( | |||
win, filename=video_file, | |||
size=None, # Use the native video size | |||
pos=[0, 0], # Center of the window | |||
flipVert=False, | |||
flipHoriz=False, | |||
loop=False, | |||
autoStart=False, | |||
noAudio=True, | |||
volume=100, | |||
name='myMovie' | |||
) | |||
# Load the audio | |||
audio = sound.Sound(audio_file, -1) | |||
# Synchronize audio and video playback | |||
win.flip() | |||
time.sleep(5) | |||
audio.play() | |||
time.sleep(0.04) | |||
video.play() | |||
video_start_time = core.getTime() | |||
while video.status != visual.FINISHED: | |||
# Draw the current video frame | |||
video.draw() | |||
win.flip() | |||
# Check for keypress to quit | |||
if "q" in event.getKeys(): | |||
audio.stop() | |||
break | |||
# Close the PsychoPy window | |||
win.close() | |||
core.quit() | |||
</syntaxhighlight> | |||
==Video encoding== | ==Video encoding== | ||