Sur cette page

QVideoFrameInput Class

La classe `QVideoFrameInput` permet de fournir des images vidéo personnalisées à ` QMediaRecorder ` ou à une sortie vidéo via ` QMediaCaptureSession`. En savoir plus...

En-tête : #include <QVideoFrameInput>
CMake : find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake : QT += multimedia
Depuis : Qt 6.8
Hérite de : QObject

Fonctions publiques

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)

Signaux

Description détaillée

QVideoFrameInput n'est pris en charge qu'avec le backend FFmpeg.

Des images vidéo personnalisées peuvent être enregistrées en connectant un générateur d'images vidéo ( QVideoFrameInput ) et un générateur de flux vidéo ( QMediaRecorder ) à un générateur de flux vidéo ( QMediaCaptureSession). Pour une implémentation en mode « pull », appelez la fonction ` sendVideoFrame()` en réponse au signal ` readyToSendVideoFrame()`. Dans l'extrait de code ci-dessous, cela est réalisé en connectant le signal à un slot dans une classe de générateur de médias personnalisée. La fonction de slot émet un autre signal contenant une nouvelle image vidéo, qui est connecté à ` sendVideoFrame()` :

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();

Voici une implémentation minimale de la fonction de slot qui fournit des images vidéo :

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

Pour plus de détails, consultez readyToSendVideoFrame() et sendVideoFrame().

Voir également QMediaRecorder, QMediaCaptureSession et QVideoSink.

Documentation sur les fonctions membres

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

Crée un nouvel objet `QVideoFrameInput` avec ` parent`.

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

Crée un nouvel objet `QVideoFrameInput` avec les paramètres d'format s d'images vidéo et ` parent`.

L'format spécifié servira d'indication pour l'initialisation de l'encodeur vidéo correspondant lors de l'appel de la méthode QMediaRecorder::record(). Si le format n'est pas spécifié ou n'est pas valide, l'encodeur vidéo sera initialisé lors de l'envoi de la première image. L'envoi d'images vidéo présentant un format et une taille de pixels différents après l'initialisation de l'encodeur vidéo correspondant peut entraîner une perte de performances pendant l'enregistrement.

Nous vous recommandons de spécifier le format si vous savez à l'avance quel type d'images vous allez envoyer.

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

Détruit l'objet.

QMediaCaptureSession *QVideoFrameInput::captureSession() const

Renvoie la session de capture à laquelle cette entrée d'image vidéo est associée, ou un objet ` nullptr ` si l'entrée d'image vidéo n'est associée à aucune session de capture.

Utilisez la méthode QMediaCaptureSession::setVideoFrameInput() pour associer l'entrée d'image vidéo à une session.

QVideoFrameFormat QVideoFrameInput::format() const

Renvoie le format d'image vidéo qui a été spécifié lors de la création de l'entrée d'image vidéo.

[signal] void QVideoFrameInput::readyToSendVideoFrame()

Indique qu'une nouvelle image peut être envoyée à l'entrée d'images vidéo. Après avoir reçu le signal, si vous avez des images à envoyer, appelez la fonction ` sendVideoFrame ` une seule fois ou en boucle jusqu'à ce qu'elle renvoie ` false`.

Voir également sendVideoFrame().

bool QVideoFrameInput::sendVideoFrame(const QVideoFrame &frame)

Envoie « QVideoFrame » à l'adresse QMediaRecorder ou une sortie vidéo via QMediaCaptureSession.

Renvoie true si le fichier frame spécifié a bien été envoyé à la destination. Renvoie false si l’image n’a pas été envoyée, ce qui peut se produire si l’instance n’est pas affectée à QMediaCaptureSession, si la session ne dispose pas de sorties vidéo ou d’un enregistreur multimédia, si l’enregistreur multimédia n’est pas démarré ou si sa file d’attente est pleine. Le signal readyToSendVideoFrame sera envoyé dès que la destination sera en mesure de traiter une nouvelle image.

L’envoi d’une image vidéo vide est interprété par QMediaRecorder comme marquant la fin du flux d’entrée. QMediaRecorder arrête automatiquement l’enregistrement si QMediaRecorder::autoStop est true et si toutes les entrées ont signalé la fin du flux.

© 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.