PyQt5 - Enregistrer le flux de la webcam
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:
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:
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