Auf dieser Seite

QVideoFrameInput Class

Die Klasse „QVideoFrameInput“ dient dazu, benutzerdefinierte Videobilder an „ QMediaRecorder “ oder über „ QMediaCaptureSession “ an eine Videoausgabe zu liefern. Mehr...

Header: #include <QVideoFrameInput>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
Seit: Qt 6.8
Erbt von: QObject

Öffentliche Funktionen

QVideoFrameInput(QObject *parent = nullptr)
QVideoFrameInput(const QVideoFrameFormat &format, QObject *parent = nullptr)
virtual ~QVideoFrameInput() override
QMediaCaptureSession *captureSession() const
QVideoFrameFormat format() const
bool sendVideoFrame(const QVideoFrame &frame)

Signale

Ausführliche Beschreibung

QVideoFrameInput wird nur mit dem FFmpeg-Backend unterstützt.

Benutzerdefinierte Videobilder können aufgezeichnet werden, indem ein „ QVideoFrameInput “ und ein „ QMediaRecorder “ mit einem „ QMediaCaptureSession “ verbunden werden. Für eine Pull-Mode-Implementierung rufen Sie „ sendVideoFrame()“ als Reaktion auf das Signal „ readyToSendVideoFrame()“ auf. Im folgenden Codeausschnitt geschieht dies durch die Verbindung des Signals mit einem Slot in einer benutzerdefinierten Mediengenerator-Klasse. Die Slot-Funktion sendet ein weiteres Signal mit einem neuen Videobild aus, das mit „ sendVideoFrame()“ verbunden ist:

QMediaCaptureSession session;
QMediaRecorder recorder;
QVideoFrameInput videoInput;

session.setRecorder(&recorder);
session.setVideoFrameInput(&videoInput);

MediaGenerator generator; // Custom class providing video frames

connect(&videoInput, &QVideoFrameInput::readyToSendVideoFrame,
        &generator, &MediaGenerator::nextVideoFrame);
connect(&generator, &MediaGenerator::videoFrameReady,
        &videoInput, &QVideoFrameInput::sendVideoFrame);

recorder.record();

Hier ist eine minimale Implementierung der Slot-Funktion, die Videobilder bereitstellt:

void MediaGenerator::nextVideoFrame()
{
    QVideoFrame frame = nextFrame();
    emit videoFrameReady(frame);
}

Weitere Details finden Sie unter readyToSendVideoFrame() und sendVideoFrame().

Siehe auch QMediaRecorder, QMediaCaptureSession und QVideoSink.

Dokumentation zu Mitgliedsfunktionen

[explicit] QVideoFrameInput::QVideoFrameInput(QObject *parent = nullptr)

Erstellt ein neues QVideoFrameInput-Objekt mit den Parametern „ parent “.

[explicit] QVideoFrameInput::QVideoFrameInput(const QVideoFrameFormat &format, QObject *parent = nullptr)

Erstellt ein neues QVideoFrameInput-Objekt mit den Video-Frame- format und parent.

Das angegebene „ format “ dient als Hinweis für die Initialisierung des entsprechenden Video-Encoders beim Aufruf von „ QMediaRecorder::record()“. Wenn das Format nicht angegeben oder ungültig ist, wird der Video-Encoder beim Senden des ersten Frames initialisiert. Das Senden von Videoframes mit einem anderen Pixelformat und einer anderen Größe nach der Initialisierung des entsprechenden Video-Encoders kann zu Leistungseinbußen während der Aufnahme führen.

Wir empfehlen, das Format anzugeben, wenn Sie im Voraus wissen, welche Art von Frames Sie senden werden.

[override virtual noexcept] QVideoFrameInput::~QVideoFrameInput()

Löscht das Objekt.

QMediaCaptureSession *QVideoFrameInput::captureSession() const

Gibt die Aufnahmesitzung zurück, mit der dieser Videobild-Eingang verbunden ist, oder einen ` nullptr `, falls der Videobild-Eingang nicht mit einer Aufnahmesitzung verbunden ist.

Verwenden Sie ` QMediaCaptureSession::setVideoFrameInput()` (), um den Videobild-Eingang mit einer Sitzung zu verbinden.

QVideoFrameFormat QVideoFrameInput::format() const

Gibt das Video-Frame-Format zurück, das bei der Erstellung des Video-Frame-Eingangs festgelegt wurde.

[signal] void QVideoFrameInput::readyToSendVideoFrame()

Signalisiert, dass ein neuer Frame an den Video-Frame-Eingang gesendet werden kann. Wenn Sie nach dem Empfang des Signals Frames zum Senden bereit haben, rufen Sie „ sendVideoFrame “ einmal oder in einer Schleife auf, bis die Funktion „ false “ zurückgibt.

Siehe auch sendVideoFrame().

bool QVideoFrameInput::sendVideoFrame(const QVideoFrame &frame)

Sendet „ QVideoFrame “ an „ QMediaRecorder “ oder gibt ein Video über „ QMediaCaptureSession “ aus.

Gibt „ true “ zurück, wenn die angegebene „ frame “ erfolgreich an das Ziel gesendet wurde. Gibt „ false “ zurück, wenn das Bild nicht gesendet wurde. Dies kann passieren, wenn die Instanz nicht „ QMediaCaptureSession “ zugewiesen ist, die Sitzung keine Videoausgänge oder keinen Medienrekorder hat, der Medienrekorder nicht gestartet ist oder dessen Warteschlange voll ist. Das Signal „ readyToSendVideoFrame “ wird gesendet, sobald das Ziel ein neues Bild verarbeiten kann.

Das Senden eines leeren Videoframes wird von „ QMediaRecorder “ als Ende des Eingabestroms interpretiert. „ QMediaRecorder “ beendet die Aufzeichnung automatisch, wenn „ QMediaRecorder::autoStop “ auf „ true “ gesetzt ist und alle Eingänge das Ende des Stroms gemeldet haben.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.