Source

pygame / movie_test.py

Full commit
import time 
import pygame
pygame.init() #or we could just call pygame.display.init() as thats all we need
pygame.mixer.quit() #This needs to be done, as the default sound system of the 
                    # ffmpeg-wrapper uses SDL_mixer, and this would cause major
                    # conflicts with the mixer module.
import pygame._movie as movie

print "Please give an (absolute)filename of a movie file you'd like to play: ",
#filename = raw_input()
filename="/home/tyler/dhs1.avi"
#initialization. It could also have a surface as a second argument, and every 
# frame will be blitted to that surface. It is the programmer's responsibility
# to be on time for rendering that surface.
# Without a surface argument, the ffmpeg-wrapper uses the sdl_overlay library. 
#screen=pygame.display.set_mode((640, 368))

##m = movie.Movie(filename)
##print m.paused  #always False, unless .pause has been called
##print m.playing #False until play has been called. Will return to false when
##print m.finished# .stop() has been called.
##                
##print m.width   #default size values of the video file
##print m.height  # They can be modified on the fly, as will be demonstrated.
##
##print m         #calls __repr__, which will show the filename, and the current 
##                # timestamp. 
###print "repeated looping plays.."#
###m.play(10)
###time.sleep(10*30)
##
##
##print "Playing infinitely"
##
##m.play(-1)       #We're going to use infinite play, so we can demonstrate all 
##                # the features.
##time.sleep(2)  #sleep for ten seconds to let one see the video play, and hear 
##                # the audio
####print "Paused:",m.paused
####print "Playing:",m.playing
####print "Movie:",m
####print "Y Top:",m.ytop
####print "X Left:",m.xleft
##time.sleep(30)
####print "Testing seek..."
####m.easy_seek(second=10, minute=5, reverse=0)
####time.sleep(5)
####m.easy_seek(second=10, minute=5, reverse=0)
####time.sleep(1)
####m.pause()
####time.sleep(5)
####m.pause()
####time.sleep(10)
##
##print "Altering xleft and ytop..."
##m.shift(10, 10)
##time.sleep(10)
##m.shift(0, 0)
###Now we're going to play with the size of the window, affecting the video on 
###the fly. resize(width, height) is the main function, changes them both at
### the same time.
##print "Resizing..."
##m.resize(m.width/2, m.height*2)
##print "sleeping..."
##time.sleep(10) #another ten second nap.
##print "Resizing again..."
##m.width = m.width*4
##print "sleeping again" 
##time.sleep(10)
##print "Back to normal!"
##m.resize(m.width/2, m.height/2)
##print "and again, sleeping..."
###back to our original size
##time.sleep(10)
##
##
###Here we demonstrate the use of pause. You pause, then call pause again to play
##print "Pausing..."
##m.pause()
##print "done pausing..."
##print m.paused
##print m.playing
##time.sleep(10)
##print "Unpausing..."
##m.pause()
##print m.paused
##print m.playing
##time.sleep(10)
###Here is the stop function. Right now, rewind is the exact same as stop.
##print "Stopping..., sleeping for 3 seconds"
##m.stop()
##time.sleep(5)
###And now we restart playing.
##del m
##print "Playing again..." 
##m=movie.Movie(filename)
##m.play(-1)
##print "done restart play..."
##time.sleep(10)
##print "Surface time..."
screen = pygame.display.set_mode((640, 348))
##m.surface=screen
##time.sleep(1)
#This will move the movie player from overlay mode to blitting to the surface 
# we've given it. This means it is our responsibility to update the display on 
# time.
#while not m.finished:
#    time.sleep(0.1)
#    pygame.display.update()



m=movie.Movie(filename, screen)
counter = 0
actions = {1: lambda x: x.paused, 6: lambda x:x.pause(), 11: lambda x:x.pause(), 15: lambda x: x.resize(int(x.width*0.9), int(x.height*0.9)), 2000:lambda x: x.stop(), 3000: lambda x: x.play(-1)}
m.play(0)
prev_time = time.time()
#m.resize(m.width*2, m.height*2)
#m.surface = screen
print "About to do surface gymnastics..."
##while not m.finished:
##    time.sleep(0.1)
##    pygame.display.update()
##time.sleep(1000)
while(1):
    new_time=time.time()
    diff = int(new_time-prev_time)
    if(diff>=1):
        counter+=1
        print counter
        prev_time=new_time
    #print "testing counter"
    if counter==3100:
        #print "breaking"
        break
    #print "has_key"
    if actions.has_key(counter):
        print "Performing action at counter value: %d" % counter
        actions[counter](m)
        counter +=1
    #print "updating"
    time.sleep(0.1) #we need to let go of the gil occassionally...
    if(not screen.get_locked()):
        try:
            pygame.display.update() #we can do this because we're blitting each frame of the movie to the main screen we instantiated.
        except pygame.error:
            break
        
print "Ending trial one..."
m.stop()
del m
#the end

m=movie.Movie(filename, screen)
prev_time = time.time()
print "About to do surface gymnastics..."
counter = 0
while(1):
    new_time=time.time()
    diff = int(new_time-prev_time)
    if(diff>=1):
        counter+=1
        print counter
        prev_time=new_time
    #print "testing counter"
    if counter==30:
        print "breaking"
        break
    #print "has_key"
    if actions.has_key(counter):
        print "Performing action at counter value: %d" % counter
        actions[counter](m)
        counter +=1
    #print "updating"
    time.sleep(0.1) #we need to let go of the gil occassionally...
    if(not screen.get_locked()):
        try:
            pygame.display.update() #we can do this because we're blitting each frame of the movie to the main screen we instantiated.
        except pygame.error:
            break

del m
print "the end"