Yocto Qt multimedia QML plugins missing
-
Hello
I am working on Linux embedded board with iMX6ULL and Yocto.
I want to use QML multimedia elements in my application, but QML multimedia plugins are not generated during bitbake build process.
I have following QT elements added to my Linux image:qtbase \ qtbase-plugins \ qtserialport \ qt5-env \ libxkbcommon \ qtquickcontrols \ qtquickcontrols2 \ qtmultimedia \ qtmultimedia-plugins \ qtmultimedia-qmlplugins \ gstreamer1.0 \ gstreamer1.0-libav \ gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad \ gstreamer1.0-plugins-imx \
qtbase is build with config(framebuffer output, no X11/wayland):
PACKAGECONFIG_append = " no-opengl accessibility fontconfig linuxfb libinput xkbcommon" PACKAGECONFIG_remove = " examples tests gbm eglfs gl gles2 kms"
And qt multimedia with gstreamer backend:
PACKAGECONFIG_append = "gstreamer"
Qt QML modules like qtquickcontrols2 works. I can run gallery demo, but any other QML example with multimedia module returns:
QQmlApplicationEngine failed to load component qrc:/main.qml:3 module "QtMultimedia" is not installed
By the way camera example with standard qtwidgets - no QML works.
Maybe I am doing something wrong, maybe it's a bug. How to get QML multimedia plugins on Linux embedded with Yocto?
-
Hello
I am working on Linux embedded board with iMX6ULL and Yocto.
I want to use QML multimedia elements in my application, but QML multimedia plugins are not generated during bitbake build process.
I have following QT elements added to my Linux image:qtbase \ qtbase-plugins \ qtserialport \ qt5-env \ libxkbcommon \ qtquickcontrols \ qtquickcontrols2 \ qtmultimedia \ qtmultimedia-plugins \ qtmultimedia-qmlplugins \ gstreamer1.0 \ gstreamer1.0-libav \ gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad \ gstreamer1.0-plugins-imx \
qtbase is build with config(framebuffer output, no X11/wayland):
PACKAGECONFIG_append = " no-opengl accessibility fontconfig linuxfb libinput xkbcommon" PACKAGECONFIG_remove = " examples tests gbm eglfs gl gles2 kms"
And qt multimedia with gstreamer backend:
PACKAGECONFIG_append = "gstreamer"
Qt QML modules like qtquickcontrols2 works. I can run gallery demo, but any other QML example with multimedia module returns:
QQmlApplicationEngine failed to load component qrc:/main.qml:3 module "QtMultimedia" is not installed
By the way camera example with standard qtwidgets - no QML works.
Maybe I am doing something wrong, maybe it's a bug. How to get QML multimedia plugins on Linux embedded with Yocto?
-
Yes, i have
QT += multimedia
in my.pro
file. I am trying to run programs from QT examples, but I haven't QML multimedia plugins inside my Linux embedded system. In /usr/lib/qml there is no QtMultimedia directory with multimedia plugins needed to use QML multimedia elements like Camera or MediaPlayerroot# opkg files qtmultimedia-qmlplugins
Package qtmultimedia-qmlplugins (5.12.3+git0+64981aee3b-r0) is installed on root and has the following files:Doesn't return any installed file.
-
@David_001 Yes, qt multimedia examples works with qtwidgets, but not with QML because of QML plugins are missing.
It is custom Linux distro generated using Yocto. There is no sudo and apt-get.
The reason why there is no qml plugiuns is probably that iMX6ULL doesn't have GPU and not support OpenGL which seems to be required to build qtmultimedia QML plugins -
Do you see something there usr/lib/qml/QtMultimedia ?
upd: ok, I see, it is -no-openglyes, QML MediaPlayer requires to have opengl,
so you use linuxfb?
There is still possible to use Qt Multimedia, (but using gstreamer and custom video sinks or pipeline).
qtmultimediaquicktools module is not built without opengl, it contains qml renderers, but also not for opengl.And qml imports are also not built because missing qtmultimediaquicktools.
So if you really want to use MediaPlayer in QML, either enable opengl (and do not use it, if it is not needed) or expose cpp objects to QML manually and use QMediaPlayer to set custom video sinks/pipeline to render to default overlay, not a QML item.
-
You forgot space in
PACKAGECONFIG_append = "gstreamer"
it should be:
PACKAGECONFIG_append = " gstreamer"
And as @VaL-Doroshchuk mentioned, opengl should be enabled, another thing is that you should better switch to eglfs plugin instead linuxfb, AFAIK imx6ULL have support for it.