def setCamera(self, camera): self.camera = camera self.recorder = QtMultimedia.QMediaRecorder(self.camera)
def __init__(self): """MainWindow constructor. Code in this method should define window properties, create backend resources, etc. """ super().__init__() # Main framework self.resize(qtc.QSize(800, 600)) base_widget = qtw.QWidget() base_widget.setLayout(qtw.QHBoxLayout()) notebook = qtw.QTabWidget() base_widget.layout().addWidget(notebook) self.file_list = qtw.QListWidget() base_widget.layout().addWidget(self.file_list) self.setCentralWidget(base_widget) # transport controls toolbar = self.addToolBar("Transport") record_act = toolbar.addAction('Rec') stop_act = toolbar.addAction('Stop') play_act = toolbar.addAction('Play') pause_act = toolbar.addAction('Pause') # define the video directory self.video_dir = qtc.QDir.home() if not self.video_dir.cd('captains_log'): qtc.QDir.home().mkdir('captains_log') self.video_dir.cd('captains_log') # Read the files in the directory self.refresh_video_list() ############ # Playback # ############ # setup the player and video widget self.player = qtmm.QMediaPlayer() self.video_widget = qtmmw.QVideoWidget() self.player.setVideoOutput(self.video_widget) notebook.addTab(self.video_widget, "Play") # connect the transport play_act.triggered.connect(self.player.play) pause_act.triggered.connect(self.player.pause) stop_act.triggered.connect(self.player.stop) play_act.triggered.connect( lambda: notebook.setCurrentWidget(self.video_widget)) # connect file list self.file_list.itemDoubleClicked.connect( self.on_file_selected) self.file_list.itemDoubleClicked.connect( lambda: notebook.setCurrentWidget(self.video_widget)) ############# # Recording # ############# # set up camera self.camera = self.camera_check() if not self.camera: self.show() return self.camera.setCaptureMode(qtmm.QCamera.CaptureVideo) # Create the viewfinder widget for recording self.cvf = qtmmw.QCameraViewfinder() self.camera.setViewfinder(self.cvf) notebook.addTab(self.cvf, 'Record') # start the camera self.camera.start() # Configure recorder self.recorder = qtmm.QMediaRecorder(self.camera) #settings = self.recorder.videoSettings() #settings.setResolution(640, 480) #settings.setFrameRate(24.0) #settings.setQuality(qtmm.QMultimedia.VeryHighQuality) #self.recorder.setVideoSettings(settings) # connect the transport record_act.triggered.connect(self.record) record_act.triggered.connect( lambda: notebook.setCurrentWidget(self.cvf) ) pause_act.triggered.connect(self.recorder.pause) stop_act.triggered.connect(self.recorder.stop) # refresh the files when the recording is made stop_act.triggered.connect(self.refresh_video_list) self.show()