class QtPlayer: def __init__(self): Initialize() self._movie = None self._videomedia = None self._videotrack = None self._audiomedia = None self._audiotrack = None self._ddobj = None self._dds = None self._rect = None global QtPlayerInstances QtPlayerInstances = QtPlayerInstances + 1 def __del__(self): self._videomedia = None self._videotrack = None self._audiomedia = None self._audiotrack = None self._audiodescr = None self._movie = None self._movie = None self._dds = None self._ddobj = None self._rect = None Terminate() global QtPlayerInstances QtPlayerInstances = QtPlayerInstances - 1 def __repr__(self): s = '<%s instance' % self.__class__.__name__ s = s + '>' return s def open(self, url, exporter=None, asaudio=0): try: movieResRef = Qt.OpenMovieFileWin(url, 1) except Exception, arg: print arg return 0 try: self._movie, d1, d2 = Qt.NewMovieFromFile(movieResRef, 0, 0) except Exception, arg: print arg Qt.CloseMovieFile(movieResRef) return 0
self.audiotimescale = None self.audiodescr = {} self.videocurtime = None self.audiocurtime = None winqt.Initialize() path = MMurl.urlretrieve(url)[0] try: movieResRef = Qt.OpenMovieFileWin(path, 1) except Qt.Error, arg: print arg else: try: self.movie, d1, d2 = Qt.NewMovieFromFile(movieResRef, 0, 0) except Qt.Error, arg: print arg self.movie = None Qt.CloseMovieFile(movieResRef) if not self.movie: raise IOError, "Cannot open: %s" % url self.movietimescale = self.movie.GetMovieTimeScale() try: self.audiotrack = self.movie.GetMovieIndTrackType(1, winqtcon.AudioMediaCharacteristic, winqtcon.movieTrackCharacteristic) self.audiomedia = self.audiotrack.GetTrackMedia() except Qt.Error, arg:
class QTWnd(MfcOsWnd): TIMER_TICK = 20 def __init__(self, bgcolor=(255, 0, 255)): MfcOsWnd.__init__(self, ) self._clstyle = win32con.CS_DBLCLKS self._style = win32con.WS_CHILD | win32con.WS_CLIPSIBLINGS self.port = None self.movie = None self.ctrl = None self.__timer_id = 0 self.__ddraw = None self.__frontBuffer = None self.__backBuffer = None self.__clipper = None self.__bgcolor = bgcolor self.__movieBuffer = None # movie position and size self._movieRect = 80, 60, 240, 180 def OnCreate(self, params): # back buffer size w, h = self.GetClientRect()[2:] self.__ddraw = ddraw.CreateDirectDraw() self.__ddraw.SetCooperativeLevel(self.GetSafeHwnd(), ddraw.DDSCL_NORMAL) ddsd = ddraw.CreateDDSURFACEDESC() ddsd.SetFlags(ddraw.DDSD_CAPS) ddsd.SetCaps(ddraw.DDSCAPS_PRIMARYSURFACE) self.__frontBuffer = self.__ddraw.CreateSurface(ddsd) ddsd = ddraw.CreateDDSURFACEDESC() ddsd.SetFlags(ddraw.DDSD_WIDTH | ddraw.DDSD_HEIGHT | ddraw.DDSD_CAPS) ddsd.SetCaps(ddraw.DDSCAPS_OFFSCREENPLAIN) ddsd.SetSize(w, h) self.__backBuffer = self.__ddraw.CreateSurface(ddsd) self.__clipper = self.__ddraw.CreateClipper(self.GetSafeHwnd()) self.__frontBuffer.SetClipper(self.__clipper) self._pxlfmt = self.__frontBuffer.GetPixelFormat() # clear back buffer ddcolor = self.__backBuffer.GetColorMatch(self.__bgcolor or (255, 255, 255)) self.__backBuffer.BltFill((0, 0, w, h), ddcolor) self.createDirectDrawQt(self.__ddraw, self._movieRect[2:]) self.HookMessage(self.OnTimer, win32con.WM_TIMER) self.__timer_id = self.SetTimer(1, self.TIMER_TICK) def createDirectDrawQt(self, ddobj, size): w, h = size ddsd = ddraw.CreateDDSURFACEDESC() ddsd.SetFlags(ddraw.DDSD_WIDTH | ddraw.DDSD_HEIGHT | ddraw.DDSD_CAPS) ddsd.SetCaps(ddraw.DDSCAPS_OFFSCREENPLAIN) ddsd.SetSize(w, h) self.__movieBuffer = ddobj.CreateSurface(ddsd) Qt.InitializeQTML() Qt.EnterMovies() Qt.SetDDObject(ddobj) Qt.SetDDPrimarySurface(self.__movieBuffer) fn = 'D:\\ufs\\mm\\cmif\\win32\\Qt\\media\\fashion.mov' try: movieResRef = Qt.OpenMovieFileWin(fn, 1) except Exception, arg: print arg return try: self.movie, d1, d2 = Qt.NewMovieFromFile(movieResRef, 0, 0) except Exception, arg: print arg