Example #1
0
	def __init__(self, controller, parent=None):
		QWidget.__init__(self, parent)
		self.controller=controller
		
		self.setupUi(self)
		self.name="Video"
		self.enabledCheckBox=None

		# hide custom device edit widget
		self.label_2.hide()
		self.customDevice_lineEdit.hide()
		self.customDeviceBrowse_pushButton_2.hide()
		self.line.hide()
		
		PluginVideoWorker.initializeVideo()
		self.refreshDeviceList()
		
		self.recStatusPollingTimer=0
	
		QObject.connect(self.addToUsed_pushButton, SIGNAL("clicked()"), self.addToUsed_pushed)
		QObject.connect(self.customDeviceBrowse_pushButton_2, SIGNAL("clicked()"), self.browseForDevice)
		QObject.connect(self.refreshDevices_pushButton, SIGNAL("clicked()"), self.refreshDeviceList)
		
		QObject.connect(
			self.recordingEnabled_button, SIGNAL("clicked()"),
			self.recordingEnabledDisabled
		)
		
		for codec in ["mpeg4","mjpeg","libtheora","libschroedinger","mpeg1video","mpeg2video","libxvid","libx264","hoffyuv","wmv1","wmv2"]:
			self.codec_comboBox.addItem(codec)

		self.loadConfig()
Example #2
0
	def stopRecording(self):
		if self.recordingEnabled_button.isChecked():
			PluginVideoWorker.stopRecording()
			if self.recStatusPollingTimer!=0:
				self.killTimer(self.recStatusPollingTimer)
				self.recStatusPollingTimer=0

		self.checkRecStatus(False)

		self.setParameterChangingUIEnabled(1)
Example #3
0
	def checkRecStatus(self, isRecording):
		status=not isRecording or PluginVideoWorker.isDeviceBeingRecorded(self.device)
		if status!=self.prevStatus:
			changed=True
		else:
			changed=False
		self.prevStatus=status
		return (status, changed)
Example #4
0
	def fillDialog(self):
		self.filename_groupBox.setTitle(self.device)
		
		cap=PluginVideoWorker.getDeviceCapabilities(self.device)
		for mode in cap.modes:
			self.modes_comboBox.addItem(str(mode.width)+"x"+str(mode.height)+" @ "+str(mode.fps)+"fps")
		self.curMode=self.getCurrentModeStr()
		self.isV4l2=cap.v4l2
Example #5
0
	def onActivatePreview(self, val):
		if not val and self.previewWidget!=None:
			self.filename_groupBox.layout().removeWidget(self.previewWidget)
			self.previewWidget.setParent(None)
			self.previewWidget=None
		elif val and (not self.previewWidget):
			self.previewWidget=PluginVideoWorker.VideoPreview()
			self.filename_groupBox.layout().addWidget(self.previewWidget)
		self.connectPreviewToRecording()
Example #6
0
	def startRecording(self, dataDirectory):
		self.setParameterChangingUIEnabled(0)
		
		if not self.recordingEnabled_button.isChecked():
			return
			
		self.dataDirectory=dataDirectory+self.name+"/"
		if not os.path.isdir(self.dataDirectory):
			os.mkdir(self.dataDirectory)
		
		recParams=self.getRecordingParameters(self.dataDirectory, datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S"), ".avi")

		PluginVideoWorker.startRecording(recParams)
		#update preview connections
		for tabI in self.getVideoTabIndexes():
			tab=self.settings_tabWidget.widget(tabI)
			tab.onActivatePreview(tab.isPreviewActive())
			

		self.recStatusPollingTimer=self.startTimer(500)

		self.emit(SIGNAL("recordingStarted()"))
Example #7
0
	def loadConfig(self):

		settings = QSettings()
		settings.beginGroup("/plugins/GatherPlugin/Video")

		lastUsedDevices = settings.value("lastUsedDevices").toStringList()
		for i,device in enumerate(lastUsedDevices):
			if PluginVideoWorker.isDevicePresent(str(device)):
				devTab=self.addDevice(str(device))
				devTab.setMode( str(settings.value("devices/%d/mode" % i).toString()) )
				devTab.setPreviewActive( settings.value("devices/%d/showPreview" % i).toBool() )

		self.recordingEnabled_button.setChecked( settings.value("recordingEnabled", QVariant(True)).toBool() )
		self.codec_comboBox.lineEdit().setText( settings.value("codec", QVariant("mpeg2video")).toString() )
		self.codecBitrate_spinBox.setValue( settings.value("bitrate", QVariant(600)).toInt()[0] )
Example #8
0
	def saveConfig(self):

		settings = QSettings()
		settings.beginGroup("/plugins/GatherPlugin/Video")

		lastUsedDevices = []
		for tabI in self.getVideoTabIndexes():
			tab = self.settings_tabWidget.widget(tabI)
			if PluginVideoWorker.isDevicePresent(str(tab.device)):
				settings.setValue("devices/%d/mode" % len(lastUsedDevices), QVariant(tab.getCurrentModeStr()))
				settings.setValue("devices/%d/showPreview" % len(lastUsedDevices), QVariant(tab.isPreviewActive()))
				lastUsedDevices.append(str(tab.device))
		settings.setValue("lastUsedDevices", QVariant(lastUsedDevices))

		settings.setValue("recordingEnabled", QVariant(self.recordingEnabled_button.isChecked())) 
		settings.setValue("codec", QVariant(self.getCurrentCodec()))
		settings.setValue("bitrate", QVariant(self.getCurrentKBitrate()))
Example #9
0
	def connectPreviewToRecording(self):
		PluginVideoWorker.setPreviewForDevice(self.getConfiguration(), self.previewWidget, 5)
Example #10
0
	def getConfiguration(self):
		modeStr=self.getCurrentModeStr()
		mode=modeRegexp.match(modeStr).groups()
		rv=PluginVideoWorker.RecordingParameters("", "mpeg4", 800, self.device, int(mode[0]), int(mode[1]), int(mode[2]), self.isV4l2)
		return rv
Example #11
0
	def refreshDeviceList(self):
		self.availableDevices_listWidget.clear()
		devices=PluginVideoWorker.getDevices()
		
		for d in devices:
			self.availableDevices_listWidget.addItem(d)