Auf dieser Seite

QGStreamerInterface Class

Bietet GStreamer-spezifische Integrationspunkte für „ Qt Multimedia “. Mehr...

Überschrift: #include <QGStreamerInterface>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
Seit: Qt 6.12

Öffentliche Funktionen

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

Statische öffentliche Mitglieder

QGStreamerInterface *instance()

Ausführliche Beschreibung

Warnung: Die Klasse „QGStreamerInterface“ bietet nur eingeschränkte Kompatibilitätsgarantien. Es gibt keine Garantien hinsichtlich der Quellcode- oder Binärkompatibilität für diese API, was bedeutet, dass ihre Funktionsfähigkeit nur für die Qt-Version garantiert ist, auf deren Basis die Anwendung entwickelt wurde. Inkompatible Änderungen sollen auf ein Minimum beschränkt bleiben und werden nur in Minor-Releases vorgenommen.

Um diese Klasse in einer Anwendung zu verwenden, verknüpfen Sie mit „ Qt::MultimediaPrivate “ (bei Verwendung von CMake) und binden Sie die Header-Datei „ #include <QtMultimedia/spi/qgstreamerinterface.h> “ ein.

QGStreamerInterface ist der Einstiegspunkt für die Anpassung des GStreamer-Backends: das Einbinden benutzerdefinierter Pipeline-Elemente als Qt-Audio- und -Videogeräte, der Zugriff auf die zugrunde liegenden „ GstPipeline “ von Qt-Objekten auf hoher Ebene sowie die Konvertierung zwischen „ QVideoFrame “ und GStreamer-Puffern.

Standardmäßig ist die Klasse in „meta-qt6“-Builds verfügbar. In benutzerdefinierten Builds mit GStreamer-Unterstützung kann sie über die Funktion „ gstreamer_qt_api “ aktiviert werden.

QtMultimedia Muss mit dem „ gstreamer “-Medien-Backend ausgeführt werden, um eine gültige Instanz der Klasse zu erhalten.

Dokumentation der Mitgliedsfunktionen

[virtual noexcept] QGStreamerInterface::~QGStreamerInterface()

Löscht die Benutzeroberfläche.

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

Erstellt einen „ QVideoFrame “, der „ buffer “ unter Verwendung des unter videoInfo beschriebenen Formats umschließt.

Der erstellte Frame teilt sich die Eigentumsrechte am angegebenen ` GstBuffer ` mit dem Aufrufer.

Siehe auch createFrameFromGstBuffer(GstBuffer *, const GstVideoInfoDmaDrm &) und gstBuffer().

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

Erstellt ein ` QVideoFrame `, das ein DMA-BUF-gestütztes ` buffer ` unter Verwendung des unter videoInfo beschriebenen Formats umschließt.

Erfordert GStreamer 1.24 oder höher mit Unterstützung für das DMA-BUF-Videoformat. Falls dies nicht unterstützt wird, wird ein ungültiges ` QVideoFrame ` zurückgegeben und eine Warnung protokolliert.

Der erstellte Frame teilt sich das Eigentumsrecht am angegebenen ` GstBuffer ` mit dem Aufrufer.

Siehe auch createFrameFromGstBuffer(GstBuffer *, const GstVideoInfo &) und gstBuffer().

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

Gibt den GStreamer-Puffer zurück, der hinter „ frame “ steht, oder „ nullptr “, falls „ frame “ keinen GStreamer-gestützten Videospeicher enthält.

Das Eigentumsrecht an dem zurückgegebenen Puffer wird nicht übertragen.

Siehe auch createFrameFromGstBuffer().

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

Gibt die zugrunde liegende GStreamer-Pipeline für „ session “ zurück oder „ nullptr “, falls „ session “ nicht auf dem GStreamer-Medien-Backend basiert.

Warnung: Die Pipeline wird weiterhin von Qt Multimedia verwaltet und gesteuert. Eine Änderung ihres Zustands oder ihrer Topologie ohne Abstimmung mit der Aufnahmesitzung kann zu undefiniertem Verhalten führen.

Siehe auch QMediaCaptureSession.

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

Gibt die zugrunde liegende GStreamer-Pipeline für player zurück oder nullptr, falls player nicht auf dem GStreamer-Medien-Backend basiert.

Warnung: Die Pipeline wird weiterhin von Qt Multimedia verwaltet und gesteuert. Eine Änderung ihres Zustands oder ihrer Topologie ohne Abstimmung mit QMediaPlayer kann zu undefiniertem Verhalten führen.

Siehe auch QMediaPlayer.

[static] QGStreamerInterface *QGStreamerInterface::instance()

Gibt die GStreamer-Schnittstelle für das aktive Backend „ Qt Multimedia “ zurück oder „ nullptr “, falls das GStreamer-Backend nicht verwendet wird.

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

Erstellt ein benutzerdefiniertes Audio-Eingabegerät anhand einer GStreamer-Pipeline-Beschreibung.

Die Zeichenkette „ gstreamerPipeline “ wird als GStreamer-Bin-Beschreibung geparst. Die resultierenden Elemente werden als Audioquelle eines „ QMediaCaptureSession “ verbunden, wenn das zurückgegebene „ QAudioDevice “ an „ QAudioInput “ übergeben und mit „ QMediaCaptureSession::setAudioInput()“ zugewiesen wird.

Elementnamen in der Beschreibung können verwendet werden, um Knoten in der Session-Pipeline über gst_bin_get_by_name() zu lokalisieren, nachdem die Capture-Session aktiv ist.

#include <QtMultimedia/spi/qgstreamerinterface.h>

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

Siehe auch makeCustomGStreamerAudioOutput(), QAudioInput und QMediaCaptureSession.

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

Erstellt ein benutzerdefiniertes Audioausgabegerät anhand einer GStreamer-Pipeline-Beschreibung.

Die Zeichenkette „ gstreamerPipeline “ wird als GStreamer-Bin-Beschreibung geparst. Die resultierenden Elemente werden als Audio-Sink eines „ QMediaCaptureSession “ verbunden, wenn das zurückgegebene „ QAudioDevice “ an „ QAudioOutput “ übergeben und mit „ QMediaCaptureSession::setAudioOutput()“ zugewiesen wird.

Siehe auch makeCustomGStreamerAudioInput(), QAudioOutput und 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.