How to deactivate a QVideoProbe?
Question:
According to the docs "If source is zero, this probe will be deactivated"
But calling setSource(0) gives the following exception:
Exception has occurred: TypeError
'PySide2.QtMultimedia.QVideoProbe.setSource' called with wrong argument types:
PySide2.QtMultimedia.QVideoProbe.setSource(int)
Supported signatures:
PySide2.QtMultimedia.QVideoProbe.setSource(PySide2.QtMultimedia.QMediaObject)
PySide2.QtMultimedia.QVideoProbe.setSource(PySide2.QtMultimedia.QMediaRecorder)
Im running my code on raspberry pi 4 with Rpi Os Bullseye 64bit and PySide2 version 5.15.2.
Example code:
import sys
from PySide2 import QtCore, QtMultimedia
from PySide2.QtMultimedia import *
from PySide2.QtMultimediaWidgets import *
from PySide2.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.available_cameras = QCameraInfo.availableCameras()
self.camera = QCamera(self.available_cameras[0])
self.probe = QtMultimedia.QVideoProbe(self)
self.probe.videoFrameProbed.connect(self.processFrame)
self.probe.setSource(self.camera)
self.probe.setSource(0)
def processFrame(self, frame):
pass
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
Answers:
The source object can be cleared like this:
self.probe.setSource(None)
In C++, passing zero to a pointer argument means the function will recieve a null pointer. Since this can’t be done explicitly in Python, PySide/PyQt allow None
to be passed instead.
Generally speaking, it’s always advisable to consult the Qt Docs in cases like this. The PySide/PyQt docs are a work in progress and are mostly auto-generated from the Qt Docs. This can often result in somewhat garbled or misleading descriptions that don’t accurately reflect how the given API works in practice.
According to the docs "If source is zero, this probe will be deactivated"
But calling setSource(0) gives the following exception:
Exception has occurred: TypeError
'PySide2.QtMultimedia.QVideoProbe.setSource' called with wrong argument types:
PySide2.QtMultimedia.QVideoProbe.setSource(int)
Supported signatures:
PySide2.QtMultimedia.QVideoProbe.setSource(PySide2.QtMultimedia.QMediaObject)
PySide2.QtMultimedia.QVideoProbe.setSource(PySide2.QtMultimedia.QMediaRecorder)
Im running my code on raspberry pi 4 with Rpi Os Bullseye 64bit and PySide2 version 5.15.2.
Example code:
import sys
from PySide2 import QtCore, QtMultimedia
from PySide2.QtMultimedia import *
from PySide2.QtMultimediaWidgets import *
from PySide2.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.available_cameras = QCameraInfo.availableCameras()
self.camera = QCamera(self.available_cameras[0])
self.probe = QtMultimedia.QVideoProbe(self)
self.probe.videoFrameProbed.connect(self.processFrame)
self.probe.setSource(self.camera)
self.probe.setSource(0)
def processFrame(self, frame):
pass
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
The source object can be cleared like this:
self.probe.setSource(None)
In C++, passing zero to a pointer argument means the function will recieve a null pointer. Since this can’t be done explicitly in Python, PySide/PyQt allow None
to be passed instead.
Generally speaking, it’s always advisable to consult the Qt Docs in cases like this. The PySide/PyQt docs are a work in progress and are mostly auto-generated from the Qt Docs. This can often result in somewhat garbled or misleading descriptions that don’t accurately reflect how the given API works in practice.