Sur cette page

QGStreamerVideoSource Class

La classe `QGStreamerVideoSource` fournit une source vidéo s'appuyant sur un élément GStreamer personnalisé. En savoir plus...

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

Propriétés

Fonctions publiques

QGStreamerVideoSource(GstElement *gstElement, QObject *parent = nullptr)
QGStreamerVideoSource(const QString &gstBinDescription, QObject *parent = nullptr)
QString gstBinDescription() const
GstElement *gstElement() const
bool isActive() const

Emplacements publics

void setActive(bool active)
void start()
void stop()

Signaux

void activeChanged(bool active)

Description détaillée

Avertissement : la classe GStreamerVideoSource n'offre que des garanties de compatibilité limitées. Il n'existe aucune garantie de compatibilité au niveau du code source ou des binaires pour ces classes, ce qui signifie que le fonctionnement de l'API n'est garanti qu'avec la version de Qt sur laquelle l'application a été développée. Toutefois, les modifications incompatibles sont limitées au strict minimum et ne seront apportées que dans les versions mineures. Pour utiliser cette classe dans une application, liez-la à Qt::MultimediaPrivate (si vous utilisez CMake), et incluez l'en-tête #include <spi/qgstreamervideosource.h>.

Construisez QGStreamerVideoSource à partir d’une description bin GStreamer ou d’un fichier « GstElement » existant, puis associez-la à QMediaCaptureSession via QMediaCaptureSession::setNativeVideoSource().

Dans tous les cas standard, nous recommandons d’utiliser ` QCamera ` plutôt que cette classe, sauf si vous avez besoin d’une configuration spécifique à GStreamer pour gérer une source vidéo personnalisée.

Par défaut, cette classe est disponible dans les versions meta-qt6. Dans les versions personnalisées prenant en charge GStreamer, la fonctionnalité gstreamer_qt_api permet de l'activer.

QtMultimedia Pour que cette classe fonctionne, il faut l'exécuter avec le backend multimédia gstreamer.

QMediaCaptureSession session;
QGStreamerVideoSource videoSource(QStringLiteral("videotestsrc name=testsrc"));

session.setNativeVideoSource(&videoSource);
videoSource.start();

Voir également QMediaCaptureSession et QCamera.

Documentation des propriétés

active : bool

Indique si la source vidéo est actuellement active.

Si la source vidéo a été connectée à un « QMediaCaptureSession », cette propriété indique si l’ GstElement sous-jacente est associée à l’« GstPipeline » au sein de la session de capture multimédia.

Fonctions d’accès :

bool isActive() const
void setActive(bool active)

Signal de notification :

void activeChanged(bool active)

[read-only] gstBinDescription : const QString

Décrit la description du fichier binaire GStreamer associée à la source vidéo.

Si la source vidéo est inopérante ou a été créée à partir d'un fichier d'GstElement existant, la chaîne de cette propriété est vide.

Fonctions d'accès :

QString gstBinDescription() const

Documentation des fonctions membres

[explicit] QGStreamerVideoSource::QGStreamerVideoSource(GstElement *gstElement, QObject *parent = nullptr)

Crée un objet `QGStreamerVideoSource` à partir d'un objet ` gstElement ` existant et d'un objet ` parent`.

L'élément doit fournir une source vidéo pouvant être utilisée par une session de capture. Le type GstElement est déclaré à l'avance dans l'en-tête QGStreamerVideoSource; il convient donc d'utiliser le type correspondant issu de la bibliothèque GStreamer.

Si l'élément spécifié est nul, la source vidéo construite est inopérante.

Remarque : la classe n’effectue aucune validation supplémentaire de l’élément fourni ; par conséquent, si l’élément spécifié ne représente pas une entrée vidéo pour GstPipeline, QGStreamerVideoSource et l’ QMediaCaptureSession associé peuvent présenter un comportement inattendu.

Remarque : QGStreamerVideoSource partage la propriété de l’ GstElement fournie avec l’appelant.

[explicit] QGStreamerVideoSource::QGStreamerVideoSource(const QString &gstBinDescription, QObject *parent = nullptr)

Crée un objet `QGStreamerVideoSource` à partir de la description du « bin » GStreamer ` gstBinDescription ` et d'un ` parent`.

Le backend GStreamer interprète la description et crée un bin pouvant servir de source vidéo pour une session de capture. Utilisez la méthode gstElement() pour accéder au bin créé.

Consultez la documentation GStreamer pour connaître la syntaxe de la chaîne de description.

S’il est impossible d’analyser la description spécifiée, empêchant ainsi la création du « GstBin », l’objet `QGStreamerVideoSource` construit est inopérant, la méthode ` gstElement()` renvoie ` nullptr`, et la méthode ` gstBinDescription()` renvoie une chaîne vide.

Remarque : QGStreamerVideoSource n’effectue aucune validation supplémentaire de la description « bin » fournie ; par conséquent, si l’ GstBin créé ne correspond pas à une entrée vidéo pour GstPipeline, QGStreamerVideoSource et l’ QMediaCaptureSession associé peuvent présenter un comportement inattendu.

Pour un meilleur contrôle de l'élément GStreamer sous-jacent, vous pouvez plutôt créer un objet `QGStreamerVideoSource` à partir d'un ` GstElement ` existant.

Voir également gstElement() et gstBinDescription().

GstElement *QGStreamerVideoSource::gstElement() const

Renvoie l'GstElement sous-jacente utilisée par la source vidéo, ou « nullptr » si la source vidéo est inopérante.

Si la source vidéo a été créée à partir d'une description « bin » de GStreamer, l'GstElement renvoyée est convertible en sous-classe de GstBin.

Remarque : cette méthode ne transfère pas la propriété de l’ GstElement.

[slot] void QGStreamerVideoSource::start()

Lance la source vidéo.

Cela revient à définir la propriété « active » sur « true ».

[slot] void QGStreamerVideoSource::stop()

Arrête la source vidéo.

Cela revient à définir la propriété « active » sur « false ».

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