def CreateDumbMovieObjectOnEachTile(filename, pos): # for debugging r = PyFfmpegMovieReader() r.setFile("/home/eolson/blah_mpeg1.mpg") r.loadFile() moviePlayer = GLMoviePlayer(origWidth=r.getSize()[0], origHeight=r.getSize()[1]) moviePlayer.setVideoSource(r) moviePlayer.setPos(pos[0], pos[1]) r.start() return moviePlayer
def __init__(self, filename, screenRect, fullRect, absRect, zoom=(4,4), pos=None, size=None, blend=False, cropRect=None, fps=None, scale=None, allowFrameSkip=True): BaseTileDisplayObject.__init__(self, screenRect=screenRect, fullRect=fullRect, absRect=absRect, zoom=zoom, pos=pos, size=size, blend=blend, cropRect=cropRect) if IsTiledMovieChunkImageBased(filename): print "Using ImageMovieReader" r = ImageMovieReader(quiet = True) else: print "Using PyFfmpegMovieReader" if not PyFfmpegMovieReader: print "PyFfmpegMovieReader is not available, make sure pyffmpeg and pyFfmpegMoviereader are installed before playing a movie." r = PyFfmpegMovieReader(quiet=True) r.setSecondsToPauseBeforeRewind(1.0) if fps != None: r.setFps(fps) r.discoverFps = False self.scale = scale self.movieReader = r #r.setFile("/home/eolson/blah_mpeg1.mpg") self.filename = filename r.setFile(self.filename) r.loadFile() print "Setting movie size:", r.getSize() self.moviePlayer = GLMoviePlayer(origWidth=r.getSize()[0], origHeight=r.getSize()[1], textureScale=scale, dstRectScale=scale) # note textureScale unused since local code replaces moviePlayer's draw function() self.moviePlayer.setAllowFrameSkip(allowFrameSkip) # because we want to # getNextFrame if it's not on current tile's display (for draggable movies) self.size = tuple(r.getSize()) if self.scale != None: self.size = self.size[0] * self.scale[0], self.size[1]* self.scale[1] if pos: # avoid None self.moviePlayer.setPos(pos[0], pos[1]) self.moviePlayer.setPos(0,0) self.setPos(*pos) print "TileMovieOBject.__init__, SETTING pos:", self.getPos() else: print "Pos is:", pos #raise print "WARNING DEBUG setting movie pos to 0,0" self.moviePlayer.setPos(0,0) self.setPos(0,0) self.moviePlayer.setVideoSource(r) print "TileMovieOBject.__init__, pos:", self.getPos() r.start()
# Note: Example to encode an mpeg1 file readable by pygame.Movie: # mencoder original.avi -of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 -o test.mpg -srate 44100 -af lavcresample=44100 -oac twolame -twolameopts br=160 -ovc lavc -lavcopts vcodec=mpeg1video:vbitrate=1152:keyint=15:mbd=2 # Setup window, etc. windowWidth = 1000 # 320 windowHeight = 700 # 280 app = App(windowWidth, windowHeight) renderer = glRenderer2D() app.setRenderer(renderer) app.initialize() renderer.init(windowWidth, windowHeight) glEnable(GL_TEXTURE_2D) r.loadFile() p = GLMoviePlayer(origWidth=r.getSize()[0], origHeight=r.getSize()[1]) #p.setPos(50, 200) p.setPos(50, 0) #p.setPos(50, -50) p.setVideoSource(r) r.start() app.addDynamicObject(p) #app.addDynamicObject(r, addToRenderer=False) app.drawBounds = 0 app.run()
# mencoder original.avi -of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 -o test.mpg -srate 44100 -af lavcresample=44100 -oac twolame -twolameopts br=160 -ovc lavc -lavcopts vcodec=mpeg1video:vbitrate=1152:keyint=15:mbd=2 # Setup window, etc. #windowWidth = 1000# 320 #windowHeight = 800 # 280 windowWidth = 800 windowHeight = 700 # 280 app = App(windowWidth, windowHeight) renderer = glRenderer2D() app.setRenderer(renderer) app.initialize() renderer.init(windowWidth, windowHeight) glEnable(GL_TEXTURE_2D) r.loadFile() p = GLMoviePlayer(origWidth=r.getSize()[0], origHeight=r.getSize()[1]) #p.setPos(50, 200) p.setPos(50, 0) #p.setPos(50, -50) p.setVideoSource(r) r.start() app.addDynamicObject(p) #app.addDynamicObject(r, addToRenderer=False) app.drawBounds = 0 app.run()
# mencoder original.avi -of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 -o test.mpg -srate 44100 -af lavcresample=44100 -oac twolame -twolameopts br=160 -ovc lavc -lavcopts vcodec=mpeg1video:vbitrate=1152:keyint=15:mbd=2 # Setup window, etc. windowWidth = 1000# 320 windowHeight = 800 # 280 app = App(windowWidth, windowHeight) renderer = glRenderer2D() app.setRenderer(renderer) app.initialize() renderer.init(windowWidth, windowHeight) glEnable(GL_TEXTURE_2D) r.loadFile() p = GLMoviePlayer(origWidth=r.getSize()[0], origHeight=r.getSize()[1]) p.setPos(50, 300) p.setVideoSource(r) r.start() app.addDynamicObject(p) #app.addDynamicObject(r, addToRenderer=False) # second movie r2 = PygameMovieReader() moviePath2 = "/home/eolson/blah_mpeg1.mpg" if len(sys.argv) > 2: moviePath2 = sys.argv[2] r2.setFile(moviePath2) r2.loadFile() p2 = GLMoviePlayer(origWidth=r2.getSize()[0], origHeight=r2.getSize()[1])
def __init__(self, filename, screenRect, fullRect, absRect, zoom=(4, 4), pos=None, size=None, blend=False, cropRect=None, fps=None, scale=None, allowFrameSkip=True): BaseTileDisplayObject.__init__(self, screenRect=screenRect, fullRect=fullRect, absRect=absRect, zoom=zoom, pos=pos, size=size, blend=blend, cropRect=cropRect) if IsTiledMovieChunkImageBased(filename): print "Using ImageMovieReader" r = ImageMovieReader(quiet=True) else: print "Using PyFfmpegMovieReader" if not PyFfmpegMovieReader: print "PyFfmpegMovieReader is not available, make sure pyffmpeg and pyFfmpegMoviereader are installed before playing a movie." r = PyFfmpegMovieReader(quiet=True) r.setSecondsToPauseBeforeRewind(1.0) if fps != None: r.setFps(fps) r.discoverFps = False self.scale = scale self.movieReader = r #r.setFile("/home/eolson/blah_mpeg1.mpg") self.filename = filename r.setFile(self.filename) r.loadFile() print "Setting movie size:", r.getSize() self.moviePlayer = GLMoviePlayer(origWidth=r.getSize()[0], origHeight=r.getSize()[1], textureScale=scale, dstRectScale=scale) # note textureScale unused since local code replaces moviePlayer's draw function() self.moviePlayer.setAllowFrameSkip( allowFrameSkip) # because we want to # getNextFrame if it's not on current tile's display (for draggable movies) self.size = tuple(r.getSize()) if self.scale != None: self.size = self.size[0] * self.scale[0], self.size[ 1] * self.scale[1] if pos: # avoid None self.moviePlayer.setPos(pos[0], pos[1]) self.moviePlayer.setPos(0, 0) self.setPos(*pos) print "TileMovieOBject.__init__, SETTING pos:", self.getPos() else: print "Pos is:", pos #raise print "WARNING DEBUG setting movie pos to 0,0" self.moviePlayer.setPos(0, 0) self.setPos(0, 0) self.moviePlayer.setVideoSource(r) print "TileMovieOBject.__init__, pos:", self.getPos() r.start()
class TiledMovieObject(BaseTileDisplayObject): def __init__(self, filename, screenRect, fullRect, absRect, zoom=(4, 4), pos=None, size=None, blend=False, cropRect=None, fps=None, scale=None, allowFrameSkip=True): BaseTileDisplayObject.__init__(self, screenRect=screenRect, fullRect=fullRect, absRect=absRect, zoom=zoom, pos=pos, size=size, blend=blend, cropRect=cropRect) if IsTiledMovieChunkImageBased(filename): print "Using ImageMovieReader" r = ImageMovieReader(quiet=True) else: print "Using PyFfmpegMovieReader" if not PyFfmpegMovieReader: print "PyFfmpegMovieReader is not available, make sure pyffmpeg and pyFfmpegMoviereader are installed before playing a movie." r = PyFfmpegMovieReader(quiet=True) r.setSecondsToPauseBeforeRewind(1.0) if fps != None: r.setFps(fps) r.discoverFps = False self.scale = scale self.movieReader = r #r.setFile("/home/eolson/blah_mpeg1.mpg") self.filename = filename r.setFile(self.filename) r.loadFile() print "Setting movie size:", r.getSize() self.moviePlayer = GLMoviePlayer(origWidth=r.getSize()[0], origHeight=r.getSize()[1], textureScale=scale, dstRectScale=scale) # note textureScale unused since local code replaces moviePlayer's draw function() self.moviePlayer.setAllowFrameSkip( allowFrameSkip) # because we want to # getNextFrame if it's not on current tile's display (for draggable movies) self.size = tuple(r.getSize()) if self.scale != None: self.size = self.size[0] * self.scale[0], self.size[ 1] * self.scale[1] if pos: # avoid None self.moviePlayer.setPos(pos[0], pos[1]) self.moviePlayer.setPos(0, 0) self.setPos(*pos) print "TileMovieOBject.__init__, SETTING pos:", self.getPos() else: print "Pos is:", pos #raise print "WARNING DEBUG setting movie pos to 0,0" self.moviePlayer.setPos(0, 0) self.setPos(0, 0) self.moviePlayer.setVideoSource(r) print "TileMovieOBject.__init__, pos:", self.getPos() r.start() def draw(self, renderer): if self.hidden: return localRectBL, txtrRectBL = self.getLocalRectTxtrRectBL() # print "pos:", self.pos, "absRect:", self.absRect # print "movie LOCAL RECT:", localRectBL, "TXTR RECTBL:", txtrRectBL localBtmLeftBL = Vec2( localRectBL.x, localRectBL.y) # probably top and btm are flipped #localTopRightTL = Vec2(localRect.x, localRect.y) #localBtmLeftBL = Vec2(localRectBL.x, self.screenRect.height-localRectBL.y) #localBtmRightBL = Vec2(localRectBL.x, localBtmLeftBL.y + localRectBL.height) #print "Drawing at:", localBtmLeft if abs(localRectBL.width) > 0 and abs(localRectBL.height) > 0: #self.texture.blit( localBtmLeft, Rect(offset.x,offset.y, size[0], size[1]), (renderer.width, renderer.height) , blend=self.blend) #self.texture.blit( localBtmLeft, localRectBL, (renderer.width, renderer.height) , blend=self.blend) # use GL coords (bottom left is 0,0) #print "Setting movie pos to: ", localBtmLeftBL #self.moviePlayer.setPos(*(txtrBtmLeftBL)) #self.moviePlayer.setPos(10,-340) # self.moviePlayer.setPos(30,10) #self.moviePlayer.setPos(*(localBtmLeft - Vec2(txtrRect.x, -txtrRect.y))) blend = False # print "movieplayer blit:", localBtmLeftBL, txtrRectBL, (renderer.width, renderer.height) , blend # Do simple blit for now instead of using easyTexture features. if self.scale == None: self.moviePlayer.easyTexture.texture.blit( localBtmLeftBL, txtrRectBL, (renderer.width, renderer.height), blend=blend) else: self.moviePlayer.easyTexture.texture.blitWithTexScale( localBtmLeftBL, txtrRectBL, (renderer.width, renderer.height), self.scale, blend=blend) """ self.moviePlayer.setPos(*(localBtmLeftBL)) self.moviePlayer.easyTexture.setWidth(localRectBL.width) self.moviePlayer.easyTexture.setHeight(localRectBL.height) self.moviePlayer.easyTexture.setTexXMinMax(txtrRectBL.x, txtrRectBL.x + txtrRectBL.width) self.moviePlayer.easyTexture.setTexXMinMax(txtrRectBL.y, txtrRectBL.y + txtrRectBL.height) self.moviePlayer.draw(renderer) """ def isOnScreen(self): # next lines copied from draw() localRectBL, txtrRectBL = self.getLocalRectTxtrRectBL() # print "local rect:", localRectBL pos = self.getPos() if localRectBL.x <= pos.x <= (localRectBL.x + localRectBL.width) and \ localRectBL.y <= pos.y <= (localRectBL.y + localRectBL.height): return True else: return False def update(self, secs, app): visible = self.isOnScreen() # print "visible:", visible self.moviePlayer.update(secs, app, visible=visible) #self.moviePlayer.update(secs, app) def isPixelTransparent(self, (x, y)): return False
class TiledMovieObject(BaseTileDisplayObject): def __init__(self, filename, screenRect, fullRect, absRect, zoom=(4,4), pos=None, size=None, blend=False, cropRect=None, fps=None, scale=None, allowFrameSkip=True): BaseTileDisplayObject.__init__(self, screenRect=screenRect, fullRect=fullRect, absRect=absRect, zoom=zoom, pos=pos, size=size, blend=blend, cropRect=cropRect) if IsTiledMovieChunkImageBased(filename): print "Using ImageMovieReader" r = ImageMovieReader(quiet = True) else: print "Using PyFfmpegMovieReader" if not PyFfmpegMovieReader: print "PyFfmpegMovieReader is not available, make sure pyffmpeg and pyFfmpegMoviereader are installed before playing a movie." r = PyFfmpegMovieReader(quiet=True) r.setSecondsToPauseBeforeRewind(1.0) if fps != None: r.setFps(fps) r.discoverFps = False self.scale = scale self.movieReader = r #r.setFile("/home/eolson/blah_mpeg1.mpg") self.filename = filename r.setFile(self.filename) r.loadFile() print "Setting movie size:", r.getSize() self.moviePlayer = GLMoviePlayer(origWidth=r.getSize()[0], origHeight=r.getSize()[1], textureScale=scale, dstRectScale=scale) # note textureScale unused since local code replaces moviePlayer's draw function() self.moviePlayer.setAllowFrameSkip(allowFrameSkip) # because we want to # getNextFrame if it's not on current tile's display (for draggable movies) self.size = tuple(r.getSize()) if self.scale != None: self.size = self.size[0] * self.scale[0], self.size[1]* self.scale[1] if pos: # avoid None self.moviePlayer.setPos(pos[0], pos[1]) self.moviePlayer.setPos(0,0) self.setPos(*pos) print "TileMovieOBject.__init__, SETTING pos:", self.getPos() else: print "Pos is:", pos #raise print "WARNING DEBUG setting movie pos to 0,0" self.moviePlayer.setPos(0,0) self.setPos(0,0) self.moviePlayer.setVideoSource(r) print "TileMovieOBject.__init__, pos:", self.getPos() r.start() def draw(self, renderer): if self.hidden: return localRectBL, txtrRectBL = self.getLocalRectTxtrRectBL() # print "pos:", self.pos, "absRect:", self.absRect # print "movie LOCAL RECT:", localRectBL, "TXTR RECTBL:", txtrRectBL localBtmLeftBL = Vec2(localRectBL.x, localRectBL.y) # probably top and btm are flipped #localTopRightTL = Vec2(localRect.x, localRect.y) #localBtmLeftBL = Vec2(localRectBL.x, self.screenRect.height-localRectBL.y) #localBtmRightBL = Vec2(localRectBL.x, localBtmLeftBL.y + localRectBL.height) #print "Drawing at:", localBtmLeft if abs(localRectBL.width) > 0 and abs(localRectBL.height) > 0: #self.texture.blit( localBtmLeft, Rect(offset.x,offset.y, size[0], size[1]), (renderer.width, renderer.height) , blend=self.blend) #self.texture.blit( localBtmLeft, localRectBL, (renderer.width, renderer.height) , blend=self.blend) # use GL coords (bottom left is 0,0) #print "Setting movie pos to: ", localBtmLeftBL #self.moviePlayer.setPos(*(txtrBtmLeftBL)) #self.moviePlayer.setPos(10,-340) # self.moviePlayer.setPos(30,10) #self.moviePlayer.setPos(*(localBtmLeft - Vec2(txtrRect.x, -txtrRect.y))) blend = False # print "movieplayer blit:", localBtmLeftBL, txtrRectBL, (renderer.width, renderer.height) , blend # Do simple blit for now instead of using easyTexture features. if self.scale == None: self.moviePlayer.easyTexture.texture.blit( localBtmLeftBL, txtrRectBL, (renderer.width, renderer.height) , blend=blend) else: self.moviePlayer.easyTexture.texture.blitWithTexScale( localBtmLeftBL, txtrRectBL, (renderer.width, renderer.height) , self.scale, blend=blend) """ self.moviePlayer.setPos(*(localBtmLeftBL)) self.moviePlayer.easyTexture.setWidth(localRectBL.width) self.moviePlayer.easyTexture.setHeight(localRectBL.height) self.moviePlayer.easyTexture.setTexXMinMax(txtrRectBL.x, txtrRectBL.x + txtrRectBL.width) self.moviePlayer.easyTexture.setTexXMinMax(txtrRectBL.y, txtrRectBL.y + txtrRectBL.height) self.moviePlayer.draw(renderer) """ def isOnScreen(self): # next lines copied from draw() localRectBL, txtrRectBL = self.getLocalRectTxtrRectBL() # print "local rect:", localRectBL pos = self.getPos() if localRectBL.x <= pos.x <= (localRectBL.x + localRectBL.width) and \ localRectBL.y <= pos.y <= (localRectBL.y + localRectBL.height): return True else: return False def update(self, secs, app): visible = self.isOnScreen() # print "visible:", visible self.moviePlayer.update(secs, app, visible=visible) #self.moviePlayer.update(secs, app) def isPixelTransparent(self, (x,y) ): return False