GStreamer Documentation Being Insufficient and Outdated

Although GStreamer is a widely used and powerful multimedia framework, I find its current documentation to be insufficient, fragmented, and often outdated.

Most of the available documentation focuses mainly on:

  • Initial setup steps

  • Very basic and introductory examples

However, for real-world use cases, especially topics such as Qt6 integration, there is a clear lack of comprehensive and up-to-date resources.

For example:

  • Even though Ubuntu 22.04 is an actively used LTS release, Qt6-related GStreamer plugins are not available by default.
  • There is no official and clear guide explaining how to properly integrate and use GStreamer with Qt6.
  • On Windows, even with GStreamer 1.24 installed, the following command fails:
gst-inspect-1.0 qml6glsink
No such element or plugin 'qml6glsink'

At this point, critical questions remain unanswered:

  • Why is the plugin missing?

  • Which build options are required?

  • How should external plugins (such as qml6glsink) be built and integrated into the system?

The documentation often:

  • Redirects users across multiple unrelated pages,

  • Lacks a clear structure,

  • Does not clearly explain build steps, dependencies, or version compatibility.

This raises several concerns:

  • Why is there no centralized, step-by-step documentation, similar to the ROS2 tutorial pages?

  • Why is there no single, well-structured resource explaining what external plugins are, how they are built, and how they are enabled?

  • Why does the GitHub repository not provide a systematic guide covering these topics?

A more organized, up-to-date, and platform-specific documentation (Linux / Windows, Qt5 / Qt6, MSVC / MinGW) would significantly improve the usability and accessibility of GStreamer for developers.

I have been researching how to use GStreamer with Qt6 for about a week, but so far without any concrete results. Many resources mention qml6glsink, yet none of them clearly explain:

  1. How this plugin is installed,
  2. Which package or build configuration provides it,
  3. How it is integrated into the system,
  4. How it is actually enabled and used with Qt6

As a result, finding clear answers to these fundamental questions has been extremely difficult, creating a significant barrier for developers who want to use GStreamer with Qt6.

Additionally, when reviewing the official GStreamer documentation at

https://gstreamer.freedesktop.org/documentation/index.html?gi-language=c
it becomes clear that while it contains an extensive amount of information, finding answers to basic and practical questions is quite difficult.

The documentation:

  • Lacks a clear learning path,

  • Is not very beginner- or integration-friendly,

  • Does not provide quick answers to fundamental questions such as “Where should I start?”, “What does each plugin do?”, or “How do I integrate GStreamer with Qt6?”

In contrast, the ROS2 documentation
https://docs.ros.org/en/humble/index.html
offers a much cleaner, more structured, and step-by-step learning experience. Core concepts, usage patterns, and build workflows are presented in a centralized and well-organized manner.

Adopting a similar documentation approach for GStreamer would significantly improve the developer experience, especially for topics like Qt6 integration and external plugin usage.

Ubuntu 22.04 is basically software from 2021, which is 5 years old now. It ships with GStreamer 1.20.

Iinitial Qt6 support was added in GStreamer 1.22.

You’re basically asking why does this completely outdated distro version does not ship something that was only added more recently. I’m not sure how to best answer that. I guess that’s just how it goes.

Ubuntu 24.04 is the latest LTS release, with 26.04 just around the corner.

The good news is that everything is Open Source Software, so you can build newer versions yourself!

As for the Windows installer, we don’t ship Qt6 with our binary packages, since that’s not really straight-forward to do. The window system integration is private ABI so generally must match the exact version the application is using, and there are different flavours too I believe.

So even if we did ship it, it would probably not work well like that for many/most people.

1 Like

The reason why our docs are the way they are is because unlike ROS2, we don’t have a huge corporation funding development. ROS2 is primarily maintained by Open Robotics which is a Google subsidiary. We’re a FOSS project run by volunteers, many of whom are working at small consultancies. I know for a fact that there are developers at Google who are paid more than the entire revenue of Centricular (the company I work for).

We’re also more welcoming to people coming out of nowhere with a patch to fix some issue. Like fixes for our docs :wink:. You can also pay one of the maintainers via the consultancy they work at to fix an issue that you care about a lot. Or if enough people want something, one of us will work on it because we care about GStreamer and the people using it.

Re: qt6 plugin, like Tim said, it’s difficult to ship on Windows or macOS because there is no such thing as a stable C++ ABI, so a plugin built with Qt 6.8 will not load/work in an app built with Qt 6.10. We would need to ship plugins built against every Qt6 version across: MSVC, MinGW, macOS, Android, iOS.

It can be done, but it would need extra build system work. You’re not the first to request this though, so I will probably work on it at some point.

1 Like

@nirbheek and @tpm thank you for your responses.