Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. GStreamer Qt6GLVideoItem cannot be imported by QML with PySide6

GStreamer Qt6GLVideoItem cannot be imported by QML with PySide6

Scheduled Pinned Locked Moved Unsolved QML and Qt Quick
3 Posts 3 Posters 140 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    djboris
    wrote on last edited by
    #1

    Hi community,

    I'm porting an application from PyQt5 to PyQt6/PySide6.

    With Qt5 it used the QMediaPlayer for playing an RTP stream processed with GStreamer like:

    self.mm = QMediaPlayer(None)
    self.mm.setMedia(QMediaContent(QUrl("gst-pipeline: ..."))
    

    As GStreamer pipelines are not supported anymore directly in Qt6-Multimedia, I switched the GUI to QML in order to use Qt6GLVideoItem.

    But I always get the following error while running the attached minimal reproduction as you can see below:

    $ ./repro.py 
    GStreamer: (major=1, minor=26, micro=0, nano=0), Qt: 6.8.3
    QQmlApplicationEngine failed to load component
    file:///home/djboris/MASKED/repro.qml:4:1: module "org.freedesktop.gstreamer.Qt6GLVideoItem" is not installed
    

    This happens with the Arch Linux GStreamer package (version 1.26.0, gst-plugins-good, gst-plugin-qml6, gst-plugin-qmlgl installed).
    The same issue exists with the GStreamer project compiled from main@7d51dc615d6ecae51e41dd8adbcf8c9a5ce74a09 with Qt6 support enabled and running in gst-dev.py-environment.

    I also tried to run it on a Debian system with the distributed packages but had no luck with making it work.

    Now my Qt debugging skills are exhausted as I don't understand how the import statement of org.freedesktop.gstreamer.Qt6GLVideoItem can find the GStreamer component as there is no qmldir present in the GStreamer installation. It looks like there is a matching symbol in /usr/lib/gstreamer-1.0/libgstqmlgl.so but how (and if) this can be imported in QML correctly.

    Finally, my questions are:

    • What could be the cause of the import issue? Or: How does the QML import of Qt6GLVideoItem work, so I could further narrow down my issue
    • Are there better ways to show an RTP stream in Qt6?

    A solution without QML is also fine. Migration from Python to C++ is possible, but not preferred. The code snippets were inspired from the GStreamer examples.

    #!/usr/bin/env python3
    # This is repro.py
    
    import sys
    import signal
    signal.signal(signal.SIGINT, signal.SIG_DFL)
    from PySide6.QtGui import QGuiApplication
    from PySide6.QtQml import QQmlApplicationEngine
    from PySide6.QtCore import qVersion
    
    import gi
    gi.require_version("GLib", "2.0")
    gi.require_version('Gst', '1.0')
    from gi.repository import Gst, GLib
    
    
    def main(args):
        app = QGuiApplication(args)
    
        pipeline = Gst.parse_launch("videotestsrc ! glupload ! qmlgloverlay name=o ! gldownload ! videoconvert ! qmlglsink name=sink")
        engine = QQmlApplicationEngine()
        engine.quit.connect(app.quit)
        engine.load('repro.qml')
    
        return app.exec()
    
    
    if __name__ == '__main__':
        Gst.init(sys.argv)
        print(f'GStreamer: {Gst.version()}, Qt: {qVersion()}')
        sys.exit(main(sys.argv))
    
    // This is repro.qml
    import QtQuick 6.0
    import QtQuick.Controls 6.0
    import org.freedesktop.gstreamer.Qt6GLVideoItem 1.0
    
    ApplicationWindow {
        visible: true
        width: 600
        height: 500
        title: "Repro"
    
        Text {
            anchors.centerIn: parent
            text: "Repro"
            font.pixelSize: 24
        }
    
        Qt6GLVideoItem {
            id: video
            objectName: "inputVideoItem"
            anchors.centerIn: parent
            width: parent.width
            height: parent.height
        }
    }
    
    1 Reply Last reply
    1
    • J Offline
      J Offline
      Jesus Gazol
      wrote last edited by Jesus Gazol
      #2

      Hi, having the same problem with Ubuntu 24.04, some debug logs attached:

      0:00:00.000056816 240736      0xb9959e0 INFO                GST_INIT gst.c:574:init_pre: Initializing GStreamer Core Library version 1.24.2
      0:00:00.000080340 240736      0xb9959e0 INFO                GST_INIT gst.c:575:init_pre: Using library installed in /usr/lib/x86_64-linux-gnu
      0:00:00.000086081 240736      0xb9959e0 INFO                GST_INIT gst.c:593:init_pre: Linux jesus-HP-ZBook 6.11.0-17-generic #17~24.04.2-Ubuntu SMP PREEMPT_DYNAMIC Mon Jan 20 22:48:29 UTC 2 x86_64
      0:00:00.000172642 240736      0xb9959e0 INFO                GST_INIT gstmessage.c:129:_priv_gst_message_initialize: init messages
      0:00:00.000314487 240736      0xb9959e0 INFO                GST_INIT gstcontext.c:86:_priv_gst_context_initialize: init contexts
      0:00:00.000365642 240736      0xb9959e0 INFO      GST_PLUGIN_LOADING gstplugin.c:328:_priv_gst_plugin_initialize: registering 0 static plugins
      0:00:00.000393865 240736      0xb9959e0 INFO      GST_PLUGIN_LOADING gstplugin.c:236:gst_plugin_register_static: registered static plugin "staticelements"
      0:00:00.000399135 240736      0xb9959e0 INFO      GST_PLUGIN_LOADING gstplugin.c:238:gst_plugin_register_static: added static plugin "staticelements", result: 1
      0:00:00.000417529 240736      0xb9959e0 INFO            GST_REGISTRY gstregistry.c:1918:ensure_current_registry: reading registry cache: ~/.cache/gstreamer-1.0/registry.x86_64.bin
      0:00:00.007627994 240736      0xb9959e0 INFO            GST_REGISTRY gstregistrybinary.c:683:priv_gst_registry_binary_read_cache: loaded ~/.cache/gstreamer-1.0/registry.x86_64.bin in 0.007197 seconds
      0:00:00.007716520 240736      0xb9959e0 INFO            GST_REGISTRY gstregistry.c:1785:scan_and_update_registry: Validating plugins from registry cache: ~/.cache/gstreamer-1.0/registry.x86_64.bin
      0:00:00.008525830 240736      0xb9959e0 INFO      GST_PLUGIN_LOADING gstplugin.c:1630:gst_plugin_ext_dep_extract_env_vars_paths:<plugin191> ignoring environment variable 'DISPLAY' with content #0 '': either not an absolute path or not a path at all
      0:00:00.008532823 240736      0xb9959e0 INFO      GST_PLUGIN_LOADING gstplugin.c:1630:gst_plugin_ext_dep_extract_env_vars_paths:<plugin191> ignoring environment variable 'DISPLAY' with content #1 '0': either not an absolute path or not a path at all
      0:00:00.008537752 240736      0xb9959e0 INFO      GST_PLUGIN_LOADING gstplugin.c:1630:gst_plugin_ext_dep_extract_env_vars_paths:<plugin191> ignoring environment variable 'WAYLAND_DISPLAY' with content #0 'wayland-0': either not an absolute path or not a path at all
      0:00:00.009375976 240736      0xb9959e0 INFO            GST_REGISTRY gstregistry.c:1877:scan_and_update_registry: Registry cache has not changed
      0:00:00.009396565 240736      0xb9959e0 INFO            GST_REGISTRY gstregistry.c:1953:ensure_current_registry: registry reading and updating done
      0:00:00.009411363 240736      0xb9959e0 INFO                GST_INIT gst.c:807:init_post: GLib runtime version: 2.80.0
      0:00:00.009415140 240736      0xb9959e0 INFO                GST_INIT gst.c:809:init_post: GLib headers version: 2.80.0
      0:00:00.009417664 240736      0xb9959e0 INFO                GST_INIT gst.c:811:init_post: initialized GStreamer successfully
      INFO:root:qml: Qt 6.9.0 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 10.3.1 20210422 (Red Hat 10.3.1-1)) [Python limited API 3.12.3]
      INFO:root:qml: Using built-in configuration: default
      INFO:root:qml: loading ~/main2.qml
      INFO:root:qml: Using attribute AA_ShareOpenGLContexts
      INFO:root:qml: Gui application
      QQmlApplicationEngine failed to load component ~/main2.qml:4:1: module "org.freedesktop.gstreamer.Qt6GLVideoItem" is not installed
      
      1 Reply Last reply
      0
      • JoeCFDJ Offline
        JoeCFDJ Offline
        JoeCFD
        wrote last edited by
        #3

        https://forum.qt.io/topic/161751/qt6-gstreamer-cmake/2?_=1744802661208

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved