Sur cette page

QGStreamerInterface Class

Fournit des points d'intégration spécifiques à GStreamer pour Qt Multimedia. En savoir plus...

En-tête : #include <QGStreamerInterface>
CMake : find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake : QT += multimedia
Depuis : Qt 6.12

Fonctions publiques

virtual ~QGStreamerInterface()
virtual QVideoFrame createFrameFromGstBuffer(GstBuffer *buffer, const GstVideoInfo &videoInfo) = 0
virtual QVideoFrame createFrameFromGstBuffer(GstBuffer *buffer, const GstVideoInfoDmaDrm &videoInfo) = 0
virtual GstBuffer *gstBuffer(const QVideoFrame &frame) = 0
virtual GstPipeline *gstPipeline(QMediaCaptureSession *session) = 0
virtual GstPipeline *gstPipeline(QMediaPlayer *player) = 0
virtual QAudioDevice makeCustomGStreamerAudioInput(const QByteArray &gstreamerPipeline) = 0
virtual QAudioDevice makeCustomGStreamerAudioOutput(const QByteArray &gstreamerPipeline) = 0

Membres publics statiques

QGStreamerInterface *instance()

Description détaillée

Avertissement : la classe QGStreamerInterface offre des garanties de compatibilité limitées. Il n'y a aucune garantie de compatibilité au niveau du code source ou des binaires pour cette API, ce qui signifie que son fonctionnement n'est garanti qu'avec la version de Qt sur laquelle l'application a été développée. 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 <QtMultimedia/spi/qgstreamerinterface.h>.

QGStreamerInterface constitue le point d’entrée pour personnaliser le backend GStreamer : encapsuler des éléments de pipeline personnalisés en tant que périphériques audio et vidéo Qt, accéder aux GstPipeline sous-jacents des objets Qt de haut niveau, et effectuer des conversions entre les QVideoFrame et les tampons GStreamer.

Par défaut, la 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 Elle doit être exécutée avec le backend multimédia « gstreamer » pour obtenir une instance valide de la classe.

Documentation des fonctions membres

[virtual noexcept] QGStreamerInterface::~QGStreamerInterface()

Détruit l'interface.

[pure virtual] QVideoFrame QGStreamerInterface::createFrameFromGstBuffer(GstBuffer *buffer, const GstVideoInfo &videoInfo)

Crée une instance de ` QVideoFrame ` qui encapsule ` buffer ` selon le format décrit à l'adresse videoInfo.

Le cadre créé partage la propriété de l’ GstBuffer spécifié avec l’appelant.

Voir également createFrameFromGstBuffer(GstBuffer *, const GstVideoInfoDmaDrm &) et gstBuffer().

[pure virtual] QVideoFrame QGStreamerInterface::createFrameFromGstBuffer(GstBuffer *buffer, const GstVideoInfoDmaDrm &videoInfo)

Crée un objet ` QVideoFrame ` qui encapsule un flux ` buffer ` basé sur DMA-BUF, selon le format décrit à l'adresse videoInfo.

Nécessite GStreamer 1.24 ou une version ultérieure prenant en charge le format vidéo DMA-BUF. Si ce format n’est pas pris en charge, renvoie un QVideoFrame invalide et consigne un avertissement.

L’image créée partage la propriété de l’ GstBuffer spécifiée avec l’appelant.

Voir également ` createFrameFromGstBuffer(GstBuffer *, const GstVideoInfo &)` et ` gstBuffer()`.

[pure virtual] GstBuffer *QGStreamerInterface::gstBuffer(const QVideoFrame &frame)

Renvoie l'frame de support du tampon GStreamer, ou nullptr si frame ne contient pas de mémoire vidéo gérée par GStreamer.

La propriété du tampon renvoyé n’ est pas transférée.

Voir également createFrameFromGstBuffer().

[pure virtual] GstPipeline *QGStreamerInterface::gstPipeline(QMediaCaptureSession *session)

Renvoie le pipeline GStreamer sous-jacent pour session, ou nullptr si session n'est pas pris en charge par le backend multimédia GStreamer.

Avertissement : le pipeline appartient toujours à Qt Multimedia et est piloté par celui-ci. La modification de son état ou de sa topologie sans coordination avec la session de capture peut entraîner un comportement indéfini.

Voir également QMediaCaptureSession.

[pure virtual] GstPipeline *QGStreamerInterface::gstPipeline(QMediaPlayer *player)

Renvoie le pipeline GStreamer sous-jacent pour player, ou nullptr si player n'est pas pris en charge par le backend multimédia GStreamer.

Avertissement : le pipeline reste la propriété de Qt Multimedia et est géré par celui-ci. La modification de son état ou de sa topologie sans coordination avec QMediaPlayer peut entraîner un comportement indéfini.

Voir également QMediaPlayer.

[static] QGStreamerInterface *QGStreamerInterface::instance()

Renvoie l'interface GStreamer correspondant au backend « Qt Multimedia » actif, ou « nullptr » si le backend GStreamer n'est pas utilisé.

[pure virtual] QAudioDevice QGStreamerInterface::makeCustomGStreamerAudioInput(const QByteArray &gstreamerPipeline)

Crée un périphérique d'entrée audio personnalisé à partir d'une description de pipeline GStreamer.

La chaîne « gstreamerPipeline » est analysée comme une description bin GStreamer. Les éléments résultants sont connectés en tant que source audio d’un « QMediaCaptureSession » lorsque l’objet « QAudioDevice » renvoyé est transmis à « QAudioInput » et attribué via « QMediaCaptureSession::setAudioInput() ».

Les noms d’éléments figurant dans la description peuvent être utilisés pour localiser des nœuds dans le pipeline de session via gst_bin_get_by_name() une fois que la session de capture est active.

#include <QtMultimedia/spi/qgstreamerinterface.h>

QMediaCaptureSession session;
QAudioInput input{
    QGStreamerInterface::instance()->makeCustomGStreamerAudioInput(
        "audiotestsrc wave=2 freq=200 ! identity name=myConverter") };
session.setAudioInput(&input);

Voir également makeCustomGStreamerAudioOutput(), QAudioInput et QMediaCaptureSession.

[pure virtual] QAudioDevice QGStreamerInterface::makeCustomGStreamerAudioOutput(const QByteArray &gstreamerPipeline)

Crée un périphérique de sortie audio personnalisé à partir d'une description de pipeline GStreamer.

La chaîne « gstreamerPipeline » est analysée comme une description de bin GStreamer. Les éléments résultants sont connectés en tant que récepteur audio d’un « QMediaCaptureSession » lorsque l’objet « QAudioDevice » renvoyé est transmis à « QAudioOutput » et attribué via « QMediaCaptureSession::setAudioOutput() ».

Voir également makeCustomGStreamerAudioInput(), QAudioOutput et QMediaCaptureSession.

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