def updatethread(self): if self.stoppos == 0: try: self.duration = self.player.query_duration( gst.FORMAT_TIME, None)[0] if self.duration == -1: return self.stoppos = self.duration self.dur_str = time2str(self.stoppos - self.startpos) self.updatelabelduration.emit("00:00.000 / %s" % self.dur_str) except: pass try: self.position = self.player.query_position(gst.FORMAT_TIME, None)[0] self.pos_str = time2str(self.position - self.startpos) self.updatelabelduration.emit("%s / %s" % (self.pos_str, self.dur_str)) if self.stoppos != self.startpos: self.updatesliderseek.emit( (self.position - self.startpos) * 100 / (self.stoppos - self.startpos)) # / 100 * (self.seekmax - self.seekmin) + self.seekmin) if self.state == gst.STATE_PLAYING: self.updatelineedit.emit(self.pos_str) except: pass
def on_buttonsave_clicked (self): if not self.playerfile: return self.splitchoose = SplitNotChosen starttime = str2time (self.ui.lineeditstarttime.text()) stoptime = str2time (self.ui.lineeditendtime.text()) duration = stoptime - starttime if starttime < 0 or duration <= 0: msg = CommonError (self.tr ("Start time or stop time invalid.")) msg.exec_() return if self.ui.checkboxleadertitle.isChecked(): title = self.ui.lineeditleadertitle.text() if len (title) > 63: msg = CommonError (self.tr ("Movie title too long.")) msg.exec_() return else: title = None timestring = "%s -- %s" % (time2str (starttime), time2str (stoptime)) ss = SaveSplit (self.params['LastSplitPath']) ss.move (self.pos() + self.rect().center() - ss.rect().center()) if not ss.exec_() == QtGui.QDialog.Accepted: return outputfile = os.path.join (ss.splitpath, ss.splitfile) self.splitter = VideoSplitter (self.playerfile, outputfile, starttime, duration, title, ss.totranscode, self.player.params, self) self.splitter.addtranscode.connect (self.addtranscode) self.splitter.startnewsplit.connect (self.newsplitted) self.splitter.startworker (timestring) self.splitprog = SplitProg() self.splitprog.move (self.pos() + self.rect().center() - self.splitprog.rect().center()) self.splitter.updatemodel.connect (self.splitprog.setprogressbar) self.splitter.finished.connect (self.splitprog.accept) if not self.splitprog.exec_() == QtGui.QDialog.Accepted: self.splitter.finished.emit()
def setloop(self, start, end): starttime = str2time(start) endtime = str2time(end) if endtime == 0 or starttime >= self.duration: self.startpos = 0 self.stoppos = self.duration elif endtime > self.duration: self.startpos = starttime self.stoppos = self.duration else: self.startpos = starttime self.stoppos = endtime self.seek(self.startpos, self.stoppos) if endtime == 0: self.player.set_state(gst.STATE_PAUSED) self.dur_str = time2str(self.stoppos - self.startpos) self.loop = False else: self.player.set_state(gst.STATE_PLAYING) self.dur_str = time2str(self.stoppos - self.startpos) self.loop = True
def updatethread (self): if self.stoppos == 0: try: self.duration = self.player.query_duration (gst.FORMAT_TIME, None)[0] if self.duration == -1: return self.stoppos = self.duration self.dur_str = time2str (self.stoppos - self.startpos) self.updatelabelduration.emit ("00:00.000 / %s" % self.dur_str) except: pass try: self.position = self.player.query_position (gst.FORMAT_TIME, None)[0] self.pos_str = time2str (self.position - self.startpos) self.updatelabelduration.emit ("%s / %s" % (self.pos_str, self.dur_str)) if self.stoppos != self.startpos: self.updatesliderseek.emit ((self.position - self.startpos) * 100 / (self.stoppos - self.startpos)) # / 100 * (self.seekmax - self.seekmin) + self.seekmin) if self.state == gst.STATE_PLAYING: self.updatelineedit.emit (self.pos_str) except: pass
def setloop (self, start, end): starttime = str2time (start) endtime = str2time (end) if endtime == 0 or starttime >= self.duration: self.startpos = 0 self.stoppos = self.duration elif endtime > self.duration: self.startpos = starttime self.stoppos = self.duration else: self.startpos = starttime self.stoppos = endtime self.seek (self.startpos, self.stoppos) if endtime == 0: self.player.set_state (gst.STATE_PAUSED) self.dur_str = time2str (self.stoppos - self.startpos) self.loop = False else: self.player.set_state (gst.STATE_PLAYING) self.dur_str = time2str (self.stoppos - self.startpos) self.loop = True
def mediafilediscovered (self, row, verified, params): if row >= len (self.checkers): return checker = self.checkers[row] if not verified: le = LoadError() le.move (self.pos() + self.rect().center() - le.rect().center()) le.exec_() # le.show() if checker["operation"] == "Merge": mergerow = checker["params"] model = self.ui.mergeview.model() if not verified: model.setData (model.index (mergerow, 1), "%s" % (self.tr ("Video Source Criteria Not Met"))) model.setData (model.index (mergerow, 2), "") self.removemergerow (mergerow) rownum = 0 for i in xrange (model.rowCount()): if self.mergelist[i] == MergeTaskReadyToProcess or self.mergelist[i] == MergeTaskVerifying: rownum += 1 self.ui.labelmerge.setText (self.tr ("There are %d video clips to be merged.") % rownum) else: model.setData (model.index (mergerow, 1), "%s" % (time2str (params.get ("length")))) model.setData (model.index (mergerow, 2), "%d X %d" % (params.get ("videowidth"), params.get ("videoheight"))) self.mergelist[mergerow] = MergeTaskReadyToProcess self.merger.verifiedtasksignal.emit (mergerow, params, verified) elif checker["operation"] == "Player": if verified: self.player.params = params self.player.playurisignal.emit (checker["params"]) self.ui.labelfilmtitle.setText (QtCore.QFileInfo (checker["params"]).fileName()) elif checker["operation"] == "Transcode": transrow = checker["params"][2] if not verified: self.transcoding [transrow]["status"] = TransTaskDeleted self.ui.transview.setRowHidden (transrow, QtCore.QModelIndex(), True) return transcode = Transcoder (*checker["params"]) transcode.playsignal.connect (transcode.play) transcode.pausesignal.connect (transcode.pause) transcode.removesignal.connect (transcode.remove) transcode.updatemodel.connect (self.updatetransmodel) transcode.finished.connect (transcode.deleteLater) transcode.startnewtransfer.connect (self.newtransferred) transcode.startworker() self.transcoding [transrow]["worker"] = transcode self.transcoding [transrow]["status"] = TransTaskProcessing del checker