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 ............... no

    According 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!


  • Lifetime Qt Champion

    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/opt

    And 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!


  • Qt Champions 2018

    @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:

    https://wiki.qt.io/RaspberryPi2EGLFS?fbclid=IwAR14XF1aB41xqTVaZVKE_eddyezT1tSZcgM-zPmvyDIyEvUgvTSMPyZUT8A

    "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.



  • @CKurdu

    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):

    https://wiki.qt.io/RaspberryPi2EGLFS?fbclid=IwAR14XF1aB41xqTVaZVKE_eddyezT1tSZcgM-zPmvyDIyEvUgvTSMPyZUT8A

    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.



  • @CKurdu

    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.



  • @matio
    I am using vlc-qt for my current project. OMXPlayer may be another solution with QProcess but I haven't tried it yet.
    Which raspberry are you using?



  • @CKurdu

    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



  • @matio

    I compiled vlc-qt on raspbian os. Also don't use "make -j8" command just use "make" or may be "make -j4"



  • @CKurdu

    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?


Log in to reply