// Main.qml
import QtCore
import QtMultimedia
import QtQuick
import QtQuick.Controls
import VWC 1.0
ApplicationWindow {
width: Screen.width
height: Screen.height
visible: true
title: qsTr("VWC: Virtual Web Camera")
Switch {
id: toggleCameraSwtich
onCheckedChanged: {
if (checked) {
videoOutput.visible = true
Controller.cameraStart()
} else {
Controller.cameraStop()
videoOutput.visible = false
}
}
}
VideoOutput {
id: videoOutput
anchors.fill: parent
Component.onCompleted: {
Controller.setVideoOutput(videoOutput)
}
}
CameraPermission {
id: permissionController
Component.onCompleted: {
if (permissionController.status !== Qt.PermissionStatus.Granted) {
permissionController.request()
}
}
}
}
// Controller.h
class Controller : public QObject
{
Q_OBJECT
public:
explicit Controller(QObject *parent = nullptr);
Q_INVOKABLE void setVideoOutput(QObject* videoOutput);
Q_INVOKABLE void cameraStart();
Q_INVOKABLE void cameraStop();
signals:
public slots:
private:
QMediaCaptureSession* captureSession;
QCamera* camera;
};
// main.cpp
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
Controller* controller = new Controller{&app};
qmlRegisterSingletonInstance("VWC", 1, 0, "Controller", controller);
QObject::connect(
&engine, &QQmlApplicationEngine::objectCreationFailed,
&app, []() { QCoreApplication::exit(-1); },
Qt::QueuedConnection);
engine.loadFromModule("VWC", "Main");
return app.exec();
}
I need to get frames from QCamera in the same time when stream is turned on. How?