このページでは

QGStreamerInterface Class

Qt Multimedia 向けに、GStreamer 専用の統合ポイントを提供します。詳細...

ヘッダー: #include <QGStreamerInterface>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
以下より: Qt 6.12以降

パブリック関数

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

静的パブリックメンバー

QGStreamerInterface *instance()

詳細な説明

警告: QGStreamerInterfaceクラスは 、互換性の保証が限定的です。この API については、ソースおよびバイナリの互換性が保証されていません。つまり、アプリケーションの開発に使用された Qt バージョンでのみ動作が保証されます。互換性を損なう変更は最小限に抑えるよう努めており、マイナーリリースでのみ行われます。

アプリケーションでこのクラスを使用するには、Qt::MultimediaPrivate にリンクし(CMake を使用している場合)、ヘッダー#include <QtMultimedia/spi/qgstreamerinterface.h> をインクルードしてください。

QGStreamerInterfaceは、GStreamerバックエンドをカスタマイズするためのエントリポイントです。これを使用すると、カスタムパイプライン要素をQtのオーディオおよびビデオデバイスとしてラップしたり、高レベルなQtオブジェクトの基盤となるGstPipeline にアクセスしたり、QVideoFrame とGStreamerバッファ間の変換を行ったりできます。

デフォルトでは、このクラスは meta-qt6 ビルドで利用可能です。GStreamer をサポートするカスタムビルドでは、gstreamer_qt_api 機能を使用して有効にできます。

QtMultimedia このクラスの有効なインスタンスを取得するには、gstreamer メディアバックエンドを使用して実行する必要があります。

メンバ関数のドキュメント

[virtual noexcept] QGStreamerInterface::~QGStreamerInterface()

インターフェースを破棄します。

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

videoInfo で説明されている形式に従って、buffer をラップするQVideoFrame を作成します。

作成されたフレームは、指定された `GstBuffer ` の所有権を呼び出し元と共有します。

createFrameFromGstBuffer(GstBuffer *, const GstVideoInfoDmaDrm &) およびgstBuffer()も参照してください 。

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

videoInfo で定義されている形式に従い、DMA-BUF をバックエンドとする `buffer ` をラップする `QVideoFrame ` を作成します。

DMA-BUF ビデオフォーマットをサポートする GStreamer 1.24 以降が必要です。サポートされていない場合、無効な `QVideoFrame ` を返し、警告をログに記録します。

作成されたフレームは、指定されたGstBuffer の所有権を呼び出し元と共有します。

createFrameFromGstBuffer(GstBuffer *, const GstVideoInfo &) およびgstBuffer()も参照してください 。

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

frame を裏付けとする GStreamer バッファを返します。frame が GStreamer を裏付けとするビデオメモリを保持していない場合は、nullptr を返します。

返されるバッファの所有権は譲渡されません。

createFrameFromGstBuffer()も参照してください 。

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

session の基になる GStreamer パイプラインを返します。session が GStreamer メディアバックエンドによってサポートされていない場合は、nullptr を返します。

警告: この パイプラインは 依然としてQt Multimedia によって所有および制御されています。キャプチャ・セッションと連携せずにその状態やトポロジーを変更すると、未定義の挙動を引き起こす可能性があります。

QMediaCaptureSessionも参照してください 。

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

player の基盤となる GStreamer パイプラインを返します。player が GStreamer メディアバックエンドによってサポートされていない場合は、nullptr を返します。

警告: このパイプラインは 依然としてQt Multimedia が所有・制御しています。QMediaPlayer と連携せずにその状態やトポロジーを変更すると、未定義の挙動を引き起こす可能性があります。

QMediaPlayerも参照してください 。

[static] QGStreamerInterface *QGStreamerInterface::instance()

アクティブなQt Multimedia バックエンドのGStreamerインターフェースを返します。GStreamerバックエンドが使用されていない場合は、nullptr を返します。

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

GStreamerパイプライン記述から、カスタムオーディオ入力デバイスを作成します。

gstreamerPipeline という文字列は、GStreamerのbin記述として解析されます。返されたQAudioDevice をQAudioInput に渡して、QMediaCaptureSession::setAudioInput()で割り当てると、その結果として生成された要素がQMediaCaptureSession のオーディオソースとして接続されます。

記述内の要素名は、キャプチャセッションがアクティブになった後、gst_bin_get_by_name() を通じてセッションパイプライン内のノードを特定するために使用できます。

#include <QtMultimedia/spi/qgstreamerinterface.h>

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

makeCustomGStreamerAudioOutput()、QAudioInput 、およびQMediaCaptureSessionも参照してください 。

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

GStreamerパイプライン記述から、カスタムオーディオ出力デバイスを作成します。

gstreamerPipeline という文字列は、GStreamerのbin記述として解析されます。返されたQAudioDevice をQAudioOutput に渡して、QMediaCaptureSession::setAudioOutput()で割り当てると、その結果として生成された要素はQMediaCaptureSession のオーディオシンクとして接続されます。

makeCustomGStreamerAudioInput()、QAudioOutput 、および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.