Bonjour,
J'essaie d'écrire une appli qui permet d'enregistrer le flux de ma webcam.
J'écris d'abord un composant Viewer pour ma webcam :
Et dans mon module principal, j'ai le code de mon appli :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 class cameraViewer(QWidget): def __init__(self, parent=None): super().__init__(parent) self.online_webcams = QCameraInfo.availableCameras() if not self.online_webcams: pass # quit self.exist = QCameraViewfinder() self.exist.show() self.layout = QHBoxLayout() self.layout.addWidget(self.exist) self.get_webcam(0) self.setLayout(self.layout) def get_webcam(self, i): self.my_webcam = QCamera(self.online_webcams[i]) self.my_webcam.setViewfinder(self.exist) self.my_webcam.setCaptureMode(QCamera.CaptureVideo) self.my_webcam.error.connect(lambda: self.alert(self.my_webcam.errorString())) self.my_webcam.start() def start(self): self.recorder = QMediaRecorder(self.my_webcam) self.recorder.setOutputLocation(QUrl.fromLocalFile("D:/chemin/vers/mon/fichier/video/test.mp4")) self.recorder.record() def stop(self): self.recorder.stop() def alert(self, s): err = QErrorMessage(self) err.showMessage(s)
Quand je clique sur le bouton start, je n'ai pas d'erreur, mais le fichier video n'est pas crée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 class myMainWindow(QMainWindow): # Constructeur def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setCentralWidget(QWidget(parent=self)) self.cameraViewer = cameraViewer() self.mainLayout = QHBoxLayout(self.centralWidget()) self.mainLayout.addWidget(self.cameraViewer, stretch=0) self.__createToolBar() def __createToolBar(self): toolbar = QToolBar("My main toolbar") self.addToolBar(toolbar) self.record_start = QPushButton('start') self.record_start.clicked.connect(self.cameraViewer.start) self.record_stop = QPushButton('stop') self.record_stop.clicked.connect(self.cameraViewer.stop) toolbar.addWidget(self.record_start) toolbar.addWidget(self.record_stop)
Pourquoi?
Merci,
Nico
Partager