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 :
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)
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
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)
Quand je clique sur le bouton start, je n'ai pas d'erreur, mais le fichier video n'est pas crée.
Pourquoi?

Merci,
Nico