Solved QtMultimedia issue, missing GStreamer after configure
-
Hello,
I installed a cross-compilation toolchain by following this tutorial:
https://mechatronicsblog.com/cross-compile-and-deploy-qt-5-12-for-raspberry-pi/
I use a Debian virtual machine for the host machine and a RaspberryPi3 for the target.
EDIT: my Qt version is 5.12.5
Everything works well at the compilation level. I can develop basic applications, but I need to use QtMultimedia which compiles but does not work on the RaspberryPi. (no sound no pictures for a video or mp3)
I have this message in the QtCreator run window of a test project:
defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer" qt5.12
I have this in the config.summary file:
Qt Multimedia:
ALSA ................................... yes
GStreamer 1.0 .......................... no
GStreamer 0.10 ......................... no
Video for Linux ........................ yes
OpenAL ................................. yes
PulseAudio ............................. no
Resource Policy (libresourceqt5) ....... no
Windows Audio Services ................. no
DirectShow ............................. no
Windows Media Foundation ............... noAccording to several forums, GLStreamer should be "yes".
I installed packages on the Pi according to this tutorial:
http://wapel.de/?p=641&fbclid=IwAR1MjlKlXg92mHDQQuPD2pJafG3M5iKuj0L84wi2xEAZ6uI2GMkqnLlieUM
As it did not work I tried to add:
sudo apt install libgstreamer*-dev gstreamer*-dev
I feel like I have installed and done the right things. I've tried several times doing different things with clean configurations but it still doesn't work.
Do you have any idea of what I'm doing wrong?
Thank you for your help!
-
Hi and welcome to devnet,
Did you copy your Pi root filesystem to your computer to be used as sysroot ? If so, did you sync the content after installing the dev librairies on your Pi ?
-
Thanks!
Yes I have done this with pi user and root:
rsync -avz root@192.168.1.2:/lib sysroot
rsync -avz root@192.168.1.2:/usr/include sysroot/usr
rsync -avz root@192.168.1.2:/usr/lib sysroot/usr
rsync -avz root@192.168.1.2:/opt/vc sysroot/optAnd fixed the relative links in the sysroot with the script found here every time I added a package on the Raspberry Pi:
https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py
This is my configure command, maybe there is a mistake here because I don't understand everything:
./configure -release -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sysroot ~/raspi/sysroot -opensource -confirm-license -skip qtwayland -skip qtlocation -skip qtscript -make libs -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -no-use-gold-linker -v -no-gbm
Thank you so much for your help!
-
@matio You should check the configure log to see what exactly is missing from GStreamer
-
@jsulm I don't realy know what this means:
+ cd /home/debian/raspi/qt-everywhere-src-5.12.5/config.tests/gpu_vivante && /home/debian/raspi/qt-everywhere-src-5.12.5/qtbase/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" "QMAKE_CFLAGS += --sysroot=/home/debian/raspi/sysroot" "QMAKE_CXXFLAGS += --sysroot=/home/debian/raspi/sysroot" "QMAKE_LFLAGS += --sysroot=/home/debian/raspi/sysroot" -early "CONFIG += cross_compile" /home/debian/raspi/qt-everywhere-src-5.12.5/qtmultimedia/config.tests/gpu_vivante + cd /home/debian/raspi/qt-everywhere-src-5.12.5/config.tests/gpu_vivante && MAKEFLAGS= /usr/bin/make > /home/debian/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -c -pipe -marm -mfpu=vfp -mtune=arm1176jzf-s -march=armv6zk -mabi=aapcs-linux -mfloat-abi=hard --sysroot=/home/debian/raspi/sysroot --sysroot=/home/debian/raspi/sysroot -O2 -std=gnu++11 -w -fPIC -I/home/debian/raspi/qt-everywhere-src-5.12.5/qtmultimedia/config.tests/gpu_vivante -I. -I/home/debian/raspi/qt-everywhere-src-5.12.5/qtbase/mkspecs/devices/linux-rasp-pi-g++ -o main.o /home/debian/raspi/qt-everywhere-src-5.12.5/qtmultimedia/config.tests/gpu_vivante/main.cpp > /home/debian/raspi/qt-everywhere-src-5.12.5/qtmultimedia/config.tests/gpu_vivante/main.cpp:32:20: error: ‘GL_VIV_YV12’ was not declared in this scope > const int format = GL_VIV_YV12; > ^ > Makefile:179 : la recette pour la cible « main.o » a échouée > make: *** [main.o] Erreur 1 test config.qtmultimedia_multimedia.tests.gpu_vivante FAILED looking for library gstreamer_1_0 Trying source 0 (type pkgConfig) of library gstreamer_1_0 ... pkg-config use disabled globally. => source produced no result. test config.qtmultimedia_multimedia.libraries.gstreamer_1_0 FAILED looking for library gstreamer_0_10 Trying source 0 (type pkgConfig) of library gstreamer_0_10 ... pkg-config use disabled globally. => source produced no result. test config.qtmultimedia_multimedia.libraries.gstreamer_0_10 FAILED executing config test linux_v4l + cd /home/debian/raspi/qt-everywhere-src-5.12.5/config.tests/linux_v4l && /home/debian/raspi/qt-everywhere-src-5.12.5/qtbase/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" "QMAKE_CFLAGS += --sysroot=/home/debian/raspi/sysroot" "QMAKE_CXXFLAGS += --sysroot=/home/debian/raspi/sysroot" "QMAKE_LFLAGS += --sysroot=/home/debian/raspi/sysroot" -early "CONFIG += cross_compile" /home/debian/raspi/qt-everywhere-src-5.12.5/qtmultimedia/config.tests/linux_v4l + cd /home/debian/raspi/qt-everywhere-src-5.12.5/config.tests/linux_v4l && MAKEFLAGS= /usr/bin/make > /home/debian/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -c -pipe -marm -mfpu=vfp -mtune=arm1176jzf-s -march=armv6zk -mabi=aapcs-linux -mfloat-abi=hard --sysroot=/home/debian/raspi/sysroot --sysroot=/home/debian/raspi/sysroot -O2 -std=gnu++11 -w -fPIC -I/home/debian/raspi/qt-everywhere-src-5.12.5/qtmultimedia/config.tests/linux_v4l -I. -I/home/debian/raspi/qt-everywhere-src-5.12.5/qtbase/mkspecs/devices/linux-rasp-pi-g++ -o main.o /home/debian/raspi/qt-everywhere-src-5.12.5/qtmultimedia/config.tests/linux_v4l/main.cpp > /home/debian/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/home/debian/raspi/sysroot --sysroot=/home/debian/raspi/sysroot -Wl,-O1 -Wl,-rpath-link,/home/debian/raspi/sysroot/opt/vc/lib -Wl,-rpath-link,/home/debian/raspi/sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/home/debian/raspi/sysroot/lib/arm-linux-gnueabihf -o linux_v4l main.o test config.qtmultimedia_multimedia.tests.linux_v4l succeeded looking for library openal Trying source 0 (type pkgConfig) of library openal ... pkg-config use disabled globally. => source produced no result. Trying source 1 (type inline) of library openal ... => source failed condition 'config.win32'. Trying source 2 (type inline) of library openal ... => source failed condition 'config.darwin'. Trying source 3 (type inline) of library openal ... + cd /home/debian/raspi/qt-everywhere-src-5.12.5/config.tests/openal && /home/debian/raspi/qt-everywhere-src-5.12.5/qtbase/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" "QMAKE_CFLAGS += --sysroot=/home/debian/raspi/sysroot" "QMAKE_CXXFLAGS += --sysroot=/home/debian/raspi/sysroot" "QMAKE_LFLAGS += --sysroot=/home/debian/raspi/sysroot" -early "CONFIG += cross_compile" 'QMAKE_USE += openal' 'QMAKE_LIBS_OPENAL = /home/debian/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenal.so' /home/debian/raspi/qt-everywhere-src-5.12.5/qtmultimedia/config.tests/openal + cd /home/debian/raspi/qt-everywhere-src-5.12.5/config.tests/openal && MAKEFLAGS= /usr/bin/make > /home/debian/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -c -pipe -marm -mfpu=vfp -mtune=arm1176jzf-s -march=armv6zk -mabi=aapcs-linux -mfloat-abi=hard --sysroot=/home/debian/raspi/sysroot --sysroot=/home/debian/raspi/sysroot -O2 -std=gnu++11 -w -fPIC -I/home/debian/raspi/qt-everywhere-src-5.12.5/qtmultimedia/config.tests/openal -I. -I/home/debian/raspi/qt-everywhere-src-5.12.5/qtbase/mkspecs/devices/linux-rasp-pi-g++ -o main.o /home/debian/raspi/qt-everywhere-src-5.12.5/qtmultimedia/config.tests/openal/main.cpp > /home/debian/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/home/debian/raspi/sysroot --sysroot=/home/debian/raspi/sysroot -Wl,-O1 -Wl,-rpath-link,/home/debian/raspi/sysroot/opt/vc/lib -Wl,-rpath-link,/home/debian/raspi/sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/home/debian/raspi/sysroot/lib/arm-linux-gnueabihf -o openal main.o /home/debian/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenal.so => source accepted. test config.qtmultimedia_multimedia.libraries.openal succeeded looking for library pulseaudio Trying source 0 (type pkgConfig) of library pulseaudio ... pkg-config use disabled globally. => source produced no result. test config.qtmultimedia_multimedia.libraries.pulseaudio FAILED looking for library libresourceqt5 Trying source 0 (type pkgConfig) of library libresourceqt5 ... pkg-config use disabled globally. => source produced no result. test config.qtmultimedia_multimedia.libraries.libresourceqt5 FAILED executing config test libclang test config.qttools_qdoc.tests.libclang FAILED executing config test webengine-alsa
But I also found something interesting at the end of this page:
"Unfortunately the GStreamer-based multimedia stuff is not quite usable at the time of writing - accelerated video works only sometimes (and with glitches), while the camera is just broken."
What do you think about this? Is it a good idea to use QtMultimedia or is there a better way to play video on a Qt application with something like libvlc?
-
Sorry for double-post, it semmed that I haven'nt installed pkg-config on my VM...
Now it seems to be configured properly:
Qt Multimedia: ALSA ................................... yes GStreamer 1.0 .......................... yes GStreamer 0.10 ......................... no Video for Linux ........................ yes OpenAL ................................. yes PulseAudio ............................. yes Resource Policy (libresourceqt5) ....... no Windows Audio Services ................. no DirectShow ............................. no Windows Media Foundation ............... no
Thanks for your help !
You saved my life !
-
@matio said in QtMultimedia issue, missing GStreamer after configure:
You saved my life !
Were you finally able to cross-compile Qt Multimedia with GStreamer support? If so please don't forget to mark your post as such. Thanks
-
@matio said in QtMultimedia issue, missing GStreamer after configure:
VM
Hi Matio,
Can you play videos using Qt Multimedia with no problem? Because I didn't, it plays videos but a problematic way. I have raspberry pi 3 b+ and I use qt vlc library to work around this problem. -
Hi,
I have not tested it for now, I just managed to compile. It took a few hours...
But your comment seems to sadly confirm what I read here (last section of the page):The issue seems to be relative to GStream and not solved yet.
I'll try as soon as possible and keep you informed about this.
-
Hi,
Finaly, I can't even play videos. I can only play sounds.
When I compile and execute I have this mesasge:
CRITICAL **: gst_video_decoder_set_latency: assertion 'GST_CLOCK_TIME_IS_VALID (min_latency)' failed
So I will use libvlc unless you know what this error means.
-
-
Hi, sorry for the late answer.
I had issues installing vlc-qt, but suceededly install libvlc and it was what I needed finaly.
I'm still interested in vlc-qt if you can help me.
I'm using RaspberryPi 3B+
-
@matio
Hi, I didn't install vlc-qt , I installed vlc and compiled vlc-qt library. My project is not qml based. I am using a widget-based qt app and at this time I am successful.I can try to help you as much as I can.
-
@CKurdu
Hi!
Thank you for your help.I followed the instructions of this page:
https://github.com/vlc-qt/vlc-qt/blob/master/BUILDING.md
But during the make step, at 93% of the compilation I have an error:
/usr/lib/arm-linux-gnueabihf/qt5/bin/uic: relocation error: /usr/lib/arm-linux-gnueabihf/qt5/bin/uic: symbol qt_qhash_seed, version Qt_5 not defined in file libQt5Core.so.5 with link time reference AUTOUIC: error: process for ui_Player.h needed by "/home/pi/vlc-qt/vlc-qt/tests/widgets/ui/Player.cpp" failed: /usr/lib/arm-linux-gnueabihf/qt5/bin/uic: relocation error: /usr/lib/arm-linux-gnueabihf/qt5/bin/uic: symbol qt_qhash_seed, version Qt_5 not defined in file libQt5Core.so.5 with link time reference uic failed... tests/widgets/CMakeFiles/Test_WidgetsPlayer_automoc.dir/build.make:60 : la recette pour la cible « tests/widgets/CMakeFiles/Test_WidgetsPlayer_automoc » a échouée make[2]: *** [tests/widgets/CMakeFiles/Test_WidgetsPlayer_automoc] Erreur 1 make[2] : on quitte le répertoire « /home/pi/vlc-qt/vlc-qt/build » CMakeFiles/Makefile2:954 : la recette pour la cible « tests/widgets/CMakeFiles/Test_WidgetsPlayer_automoc.dir/all » a échouée make[1]: *** [tests/widgets/CMakeFiles/Test_WidgetsPlayer_automoc.dir/all] Erreur 2 make[1] : on quitte le répertoire « /home/pi/vlc-qt/vlc-qt/build » Makefile:141 : la recette pour la cible « all » a échouée make: *** [all] Erreur 2
Do you have an idea of what happened ?
-
@CKurdu Hi, can your try change the amount of memory made for the GPU to 256? it's in the
raspi-config -> Advance option -> Memory split -> 256
because I stuck to compiling gstreamer
-
I compiled vlc-qt on raspbian os. Also don't use "make -j8" command just use "make" or may be "make -j4"
-
I compiled it on raspbian too and I haven't used the -j option.
I tried again today but I still have the same error.
The issue is surely related to this message:
"the version Qt_5 not defined in file libQt5Core.so.5"
But I don't know what this means and how to solve it.
-
Which version of Qt did you install and how?