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 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()
Ejemplo n.º 4
0
    # 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()

Ejemplo n.º 5
0
    # 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()
Ejemplo n.º 6
0
    # 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