Пример #1
0
    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
Пример #2
0
	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()
Пример #3
0
    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
Пример #4
0
	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
Пример #5
0
	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
Пример #6
0
	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