Import Error when Integrating Qt and GStreamer.

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Import Error when Integrating Qt and GStreamer.

iotsystek
I’m new to Linux, Qt, GStreamer, qmake, cmake…  My goal is to learn all of
the above while creating something that is personally useful and challenging
for myself.

I have installed both Qt 5.15.2 and GStreamer 1.18.0 on an Ubuntu 20.10 PC.
Both Qt and GStreamer are working as expected.  I have been able to build
and run any desired Qt Example without issue.  I have also been able to
compile and run all of the GStreamer tutorials as well as my own custom
pipelines using  C and gst-launch-1.0.

I’m attempting to use the example from:
https://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/tests/examples/qt/qmlsink
To get a test video to display in a QML application.

The qmlsink example compiles and runs BUT I have one problem that I have not
been able to resolve.  Within the main.qml file is an import that is not
found.

import org.freedesktop.gstreamer.GLVideoItem 1.0
Err = QML module not found (org.freedesktop.gstreamer.GLVideoItem 1.0)
See screen shot below:

<http://gstreamer-devel.966125.n4.nabble.com/file/t379857/Integrate_Qt_and_GStreamer.png>

If I comment out the import line, then the line with GstGLVideoItem errors
with Unknown component and the app will not run.

*I cannot find any documentation regarding GLVideoItem or GstGLVideoItem in
any web search. It would be great if someone has information-documentation
regarding this feature and how best to use it and could share it.*

This problem spawns several noob questions regarding how to troubleshoot
GStreamer and Qt import issues.
1) Is there a way to find which GStreamer file that this import is in?
2) Is there a way to search the system for this import and what would I look
for?
3) How can the app compile and run with this error?
4) What needs to be installed or settings changed to satisfy the error.

Below is a list of everything “GStreamer related” installed on the system.

$ pkg-config --list-all | grep gstreamer

gstreamer-1.0                  GStreamer - Streaming media framework
gstreamer-allocators-1.0       GStreamer Allocators Library - Allocators
implementation
gstreamer-app-1.0              GStreamer Application Library - Helper
functions and base classes for application integration
gstreamer-audio-1.0            GStreamer Audio library - Audio helper
functions and base classes
gstreamer-base-1.0             GStreamer base classes - Base classes for
GStreamer elements
gstreamer-check-1.0            GStreamer check unit testing - Unit testing
helper library for GStreamer modules
gstreamer-controller-1.0       GStreamer controller - Dynamic parameter
control for GStreamer elements
gstreamer-fft-1.0              GStreamer FFT Library - FFT implementation
gstreamer-gl-1.0               GStreamer OpenGL Plugins Libraries -
Streaming media framework, OpenGL plugins libraries
gstreamer-gl-egl-1.0           GStreamer OpenGL Plugins Libraries (Wayland
specifics) - Streaming media framework, OpenGL plugins libraries (EGL
specifics)
gstreamer-gl-prototypes-1.0    GStreamer OpenGL Plugins Libraries (OpenGL
Prototypes) - Streaming media framework, OpenGL plugins libraries (OpenGL
Prototypes)
gstreamer-gl-wayland-1.0       GStreamer OpenGL Plugins Libraries (Wayland
specifics) - Streaming media framework, OpenGL plugins libraries (Wayland
specifics)
gstreamer-gl-x11-1.0           GStreamer OpenGL Plugins Libraries (X11
specifics) - Streaming media framework, OpenGL plugins libraries (X11
specifics)
gstreamer-net-1.0              GStreamer networking library -
Network-enabled GStreamer plug-ins and clocking
gstreamer-pbutils-1.0          GStreamer Base Utils Library - General
utility functions
gstreamer-plugins-base-1.0     GStreamer Base Plugins Libraries - Streaming
media framework, base plugins libraries
gstreamer-riff-1.0             GStreamer RIFF Library - RIFF helper
functions
gstreamer-rtp-1.0              GStreamer RTP Library - RTP base classes and
helper functions
gstreamer-rtsp-1.0             GStreamer RTSP Library - RTSP base classes
and helper functions
gstreamer-sdp-1.0              GStreamer SDP Library - SDP helper functions
gstreamer-tag-1.0              GStreamer Tag Library - Tag base classes and
helper functions
gstreamer-video-1.0            GStreamer Video Library - Video base classes
and helper functions

Thanks in advance for any assistance.




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Import Error when Integrating Qt and GStreamer.

iotsystek
Update: I have totally rebuilt my system trying to resolve this. Reinstalled
Qt 5.15.2 using the online installer and GStreamer 1.18.0 following the
instructions on the GStreamer website into an Ubuntu 20.10 PC. Both Qt and
GStreamer are working as expected. I have been able to build and run any
desired Qt Example without issue. I have also been able to compile and run
any of the GStreamer tutorials as well as my own custom pipelines using C
and gst-launch-1.0.

The Error persists. I have no idea as to how to fix this.  I don’t know what
kind of files QML imports look for.  Are there tools or utilities available
that would help debug this?  Does someone have this working and could offer
some suggestions.




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Import Error when Integrating Qt and GStreamer.

Matthew Waters
Hi,

It sounds like you don't have the required qmlglsink GStreamer element
available.  That is what provides the necessary GLVideoItem for Qt to
use.  Instantiating the first qmlglsink is what registers the necessary
Qt item for Qt to use as mentioned in the qmlsink example.  On Ubuntu
20.10 you want the gstreamer1.0-qt5 package.

Then 'gst-inspect-1.0 qmlglsink' should output the element's details.


On 6/4/21 6:30 am, iotsystek wrote:

> Update: I have totally rebuilt my system trying to resolve this. Reinstalled
> Qt 5.15.2 using the online installer and GStreamer 1.18.0 following the
> instructions on the GStreamer website into an Ubuntu 20.10 PC. Both Qt and
> GStreamer are working as expected. I have been able to build and run any
> desired Qt Example without issue. I have also been able to compile and run
> any of the GStreamer tutorials as well as my own custom pipelines using C
> and gst-launch-1.0.
>
> The Error persists. I have no idea as to how to fix this.  I don’t know what
> kind of files QML imports look for.  Are there tools or utilities available
> that would help debug this?  Does someone have this working and could offer
> some suggestions.
>
>
>
>
> --
> Sent from: http://gstreamer-devel.966125.n4.nabble.com/
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

OpenPGP_signature (505 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Import Error when Integrating Qt and GStreamer.

iotsystek
Thank you for your input, its greatly appreciated.

When I attempted to install using: sudo apt install gstreamer1.0-qt5 as
expected it shows as already being installed.

/[sudo] password for ubuntu:
Reading package lists... Done
Building dependency tree      
Reading state information... Done
gstreamer1.0-qt5 is already the newest version (1.14.5-0ubuntu1~18.04.1).
The following packages were automatically installed and are no longer
required:
  linux-headers-5.4.0-62-generic linux-hwe-5.4-headers-5.4.0-42
linux-hwe-5.4-headers-5.4.0-58 linux-hwe-5.4-headers-5.4.0-59
linux-hwe-5.4-headers-5.4.0-60
  linux-hwe-5.4-headers-5.4.0-62 linux-image-5.4.0-62-generic
linux-modules-5.4.0-62-generic linux-modules-extra-5.4.0-62-generic
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 26 not upgraded.
/

When I run: gst-inspect-1.0 qmlglsink I get the expected output.

/Factory Details:
  Rank                     none (0)
  Long-name                Qt Video Sink
  Klass                    Sink/Video
  Description              A video sink that renders to a QQuickItem
  Author                   Matthew Waters <[hidden email]>

Plugin Details:
  Name                     qmlgl
  Description              Qt gl plugin
  Filename                
/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstqmlgl.so
  Version                  1.14.5
  License                  LGPL
  Source module            gst-plugins-good
  Source release date      2019-05-29
  Binary package           GStreamer Good Plugins (Ubuntu)
  Origin URL              
https://launchpad.net/distros/ubuntu/+source/gst-plugins-good1.0

GObject
 +----GInitiallyUnowned
       +----GstObject.............................You get the idea.
/

I say expected because my simple test code compiles and runs as expected
displaying a video in a QML window.  This error is preventing me from being
able to do any UI development using the designer.

I found a short video regarding imports on Youtube.  From that and what I
have read on other sites, could this problem be related to NOT having either
plugins.qmltypes or qmldir files in the folder with the libgstqmlgl.so file?
If so do you know where I could find those files?

Do you have a working example?

Thanks in advance for any further assistance.

<http://gstreamer-devel.966125.n4.nabble.com/file/t379857/2021-04-05_180452.jpg>




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Import Error when Integrating Qt and GStreamer.

Matthew Waters
Ah, so your problem is use with the Qt designer not showing finding the
relevant qml code.  That use case is currently not supported by qmlglsink.

The issue is that the necessary QML item is contained within the
qmlglsink element itself and is registered dynamically when the element
itself is instantiated.  Qt designer doesn't know anything about
GStreamer so cannot perform this initialisation for you. There are no
qmldir or qmltype files for qmlglsink.

The 'fix' involves are rather complicated restructure of the qmlglsink
element to support placing the qml part/plugin in a separate .so that is
findable with Qt tools (using qmldir or whatever).

Cheers
-Matt

On 6/4/21 11:22 am, iotsystek wrote:

> Thank you for your input, its greatly appreciated.
>
> When I attempted to install using: sudo apt install gstreamer1.0-qt5 as
> expected it shows as already being installed.
>
> /[sudo] password for ubuntu:
> Reading package lists... Done
> Building dependency tree
> Reading state information... Done
> gstreamer1.0-qt5 is already the newest version (1.14.5-0ubuntu1~18.04.1).
> The following packages were automatically installed and are no longer
> required:
>    linux-headers-5.4.0-62-generic linux-hwe-5.4-headers-5.4.0-42
> linux-hwe-5.4-headers-5.4.0-58 linux-hwe-5.4-headers-5.4.0-59
> linux-hwe-5.4-headers-5.4.0-60
>    linux-hwe-5.4-headers-5.4.0-62 linux-image-5.4.0-62-generic
> linux-modules-5.4.0-62-generic linux-modules-extra-5.4.0-62-generic
> Use 'sudo apt autoremove' to remove them.
> 0 upgraded, 0 newly installed, 0 to remove and 26 not upgraded.
> /
>
> When I run: gst-inspect-1.0 qmlglsink I get the expected output.
>
> /Factory Details:
>    Rank                     none (0)
>    Long-name                Qt Video Sink
>    Klass                    Sink/Video
>    Description              A video sink that renders to a QQuickItem
>    Author                   Matthew Waters <[hidden email]>
>
> Plugin Details:
>    Name                     qmlgl
>    Description              Qt gl plugin
>    Filename
> /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstqmlgl.so
>    Version                  1.14.5
>    License                  LGPL
>    Source module            gst-plugins-good
>    Source release date      2019-05-29
>    Binary package           GStreamer Good Plugins (Ubuntu)
>    Origin URL
> https://launchpad.net/distros/ubuntu/+source/gst-plugins-good1.0
>
> GObject
>   +----GInitiallyUnowned
>         +----GstObject.............................You get the idea.
> /
>
> I say expected because my simple test code compiles and runs as expected
> displaying a video in a QML window.  This error is preventing me from being
> able to do any UI development using the designer.
>
> I found a short video regarding imports on Youtube.  From that and what I
> have read on other sites, could this problem be related to NOT having either
> plugins.qmltypes or qmldir files in the folder with the libgstqmlgl.so file?
> If so do you know where I could find those files?
>
> Do you have a working example?
>
> Thanks in advance for any further assistance.
>
> <http://gstreamer-devel.966125.n4.nabble.com/file/t379857/2021-04-05_180452.jpg>
>
>
>
>
> --
> Sent from: http://gstreamer-devel.966125.n4.nabble.com/
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

OpenPGP_signature (505 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Import Error when Integrating Qt and GStreamer.

iotsystek
Wow!!! Thank You!!!

I have spent over a week researching and trying to figure this out. It
always seemed like it should be fixable if I could just find the missing
parts pieces - settings. I guess not.

As I said at the beginning of the thread I’m new to Linux, Qt, GStreamer,
qmake, cmake therefor I do not think that that time was wasted as I have
learned a lot.

If you don’t mind a few more questions. Was this information available
somewhere on the Qt or GStreamer web sites?  If so, where? How could I have
missed it?

Time to move on.

Thank you again.
Jim




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel