Enable Gstreamer in Qt5 configuration



  • Dear all,

    I'm a newbie.
    I got an issue and I try to solve it but unsuccessfully.
    Could you please give me advice ?
    I want play and video on Linux embedded,
    I install Gstreamer and I can play video with command (gst-launch)
    But in Qt configuration I can not enable Gstreamer option.
    I try with command "configure -v " but no information about gstreamer is displayed.
    Did i install lack of any package?
    Any advice is greatly appreciated. Thank you so much!


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    AFAIK gstreamer is the default backend on linux but it must be detected. Did you install the dev package ?



  • Thank for your reply.
    I installed gstreamer-0.10.36 and gst-plugins-good, bad,ugly, ffmpeg...
    Is it enough? What's dev package that you mention?


  • Moderators

    [quote author="MeowMeow" date="1375842736"]I installed gstreamer-0.10.36 and gst-plugins-good, bad,ugly, ffmpeg...
    Is it enough?[/quote]No, those are runtime packages, not development packages.

    [quote]What's dev package that you mention?[/quote]It should look like libgstreamer0.10-dev



  • Dear JKSH,
    Thanks for your support.
    I installed libqtgstreamer-dev.
    But when I run configuration again nothing change.
    Does it need any more packages?


  • Lifetime Qt Champion

    Did you just re-run configure or did you clean up before ?



  • Dear SGaist,
    Thanks for your advice.
    I just rerun configuration,
    Could you please tell me how to clean up old configuration on Qt5 without git?


  • Lifetime Qt Champion

    IIRC, it should be

    @make confclean@



  • Dear SGaist
    I tried and got error.
    After searching on Google, I found that this command is not work with Qt5
    Do you have any ideas?


  • Lifetime Qt Champion

    Are you doing an out of source build ?



  • I'm doing in qt-everywhere-opensource where I run command configuration.
    It got error result, but when I try this command in qtbase it run successfully.
    I run configuration again and nothing change.
    Gstreamer is not enabled, and no information about it >"<


  • Lifetime Qt Champion

    If you are using a source package I would say, delete your current sources and start from new.

    Also, use the shadow build possibility, this way you can play with the configuration without cluttering your sources



  • Dear SGalst,
    Thanks for a lot of support you give to me.
    Do you mean that I should delete the current qt-everywhere-opensource...
    uncompress file and configuration again ?
    I will try it .
    I have one more question.
    In my Qt configuration information, GLIB is disable,
    If I want to enable Gstreamer, I need to enable GLIB, is it right ? or they don't have any relation ?

    Again, thank you so much!


  • Lifetime Qt Champion

    Yes, that's what I mean.

    Disabled or not detected ?



  • Dear SGalst,

    About Glib, when i run configuration, this information is displayed.
    @
    Glib auto-detection... ()
    ...
    lib/arm-linux-gnueabi/librt.so.1: could not read symbols: Invalid operation
    collect2: ld returned 1 exit status
    make: *** [glib] Error 1
    Glib disabled.
    @

    And in configuration table

    @
    ...
    Glib support ........... no
    GStreamer support ...... no
    PulseAudio support ..... no
    Large File support ..... yes
    GIF support ............ plugin
    JPEG support ........... plugin (system)
    PNG support ............ yes (qt)
    ...
    @


  • Lifetime Qt Champion

    Are you cross-compiling Qt ?



  • Yes. It's cross-compiling.



  • Yes, it's cross-compiling.


  • Lifetime Qt Champion

    That's the kind of detail you should have mention earlier...

    First thing, did you install a cross-compiling environment ? Did you pass the correct parameters to configure to enable cross-compilation ? Did you get the cross-compiled version of the dependencies you need ?



  • Dear SGalt,
    Sorry about mention cross-compiling lately.
    The cross-compiling is installed in my system, it is linaro-arm-linux-
    About parameters to configure, I think Qt can autodetect Gstreamer so I don't pass any option for Gstreamer in command.
    When configuration, nomally it will display information why option is disable, which errors occurs... so I can fix errors and option is enable . With Gstreamer, nothing to display, it makes me confusion.
    Thank for your support.



  • Are there any ideas?


  • Lifetime Qt Champion

    You're configuration process fails while testing glib, do you have it for ARM ? Also can you post your complete configure command ?



  • Dear SGalt,
    I have just installed glib2.0, libglib2.0, libglib2.0-dev, libqtglib2.0 before.
    @
    ../gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/bin/arm-linux-gnueabi-g++ --sysroot=[TARGET_ROOTFS] -o glib glib.o -L[TARGET_ROOTFS]/usr/lib -L[TARGET_ROOTFS]/usr/lib/arm-linux-gnueabi -L[TARGET_ROOTFS/lib/arm-linux-gnueabi -lpthread -ldl -lGLESv2 -lEGL -lIMGegl -lsrv_um -lgmodule-2.0 -lgobject-2.0 -lffi -ldbus-1 -lpcre --sysroot=[TARGET_ROOTFS] -pthread -lgthread-2.0 -lrt -lglib-2.0

    /arm-linux-gnueabi/bin/ld: note: 'clock_gettime@@GLIBC_2.4' is defined in DSO ../lib/arm-linux-gnueabi/librt.so.1 so try adding it to the linker command line
    /lib/arm-linux-gnueabi/librt.so.1: could not read symbols: Invalid operation
    collect2: ld returned 1 exit status
    make: *** [glib] Error 1
    Glib disabled.
    @
    librt.so.1 exist in /lib/arm-linux-gnueabi
    I try to search solution in Google and many answer is add " -lrt" but you can see that it exist in my command.

    This is my complete configure command
    @
    ./configure -confirm-license -opensource -v -arch arm -device linux-xxx-g++ -prefix /opt/share/qt5 -device-option CROSS_COMPILE=/home/gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/bin/arm-linux-gnueabi- -sysroot /home/rootfs_br -debug -continue -opengl es2 -pkg-config -dbus -icu
    @

    Note : linux-xxx-g++ exist in qt-everywhere.../qtbase/mkspecs/devices/


  • Lifetime Qt Champion

    Since you are cross-compiling, you also need to either get the ARM version of these libraries or cross-compile them.



  • Yes, i get the libraries - armel version, they are debian file and i install them by command "dpkg".


  • Lifetime Qt Champion

    Where did you install them ?



  • I install them on target rootfs.


  • Lifetime Qt Champion

    Then how can the configure script find the libraries ?

    One way to do that is to copy the libraries and headers from your target rootfs in your toolchain directories



  • Hello, I know this thread is quite old but I'm running into the same issues. I mounted the target's rootfs in a local folder and I set the sysroot parameter to that path.

    In that folder there is the complete arm filesystem with these packages installed:

    @
    libgstreamer0.10-dev
    libgstreamer-plugins-base0.10-dev
    gstreamer-tools
    gstreamer0.10-plugins-bad
    gstreamer0.10-plugins-good
    gstreamer0.10-plugins-ugly
    libglib2.0-dev
    libglib2.0-0
    libqtglib-2.0-0
    @

    Here the configure command:

    @
    ./configure -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/dev/rpi/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /mnt/rasp-pi-rootfs -opensource -confirm-license -optimized-qmake -reduce-relocations -reduce-exports -release -developer-build -make libs -prefix /usr/local/qt5pi -no-pch -nomake examples -nomake tests -silent
    @

    Anyway both GLib and GStreamer supports are disabled. Here the related errors:

    @
    Glib auto-detection... ()
    compiling glib.cpp
    glib.cpp: In function ‘int main(int, char**)’:
    glib.cpp:48:19: warning: variable ‘context’ set but not used [-Wunused-but-set-variable]
    glib.cpp:55:38: warning: ‘pollfd’ is used uninitialized in this function [-Wuninitialized]
    linking glib
    /home/femtotech/dev/rpi/gcc-4.7-linaro-rpi-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.7.2/../../../../arm-linux-gnueabihf/bin/ld: /mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libglib-2.0.a(gmain.o): undefined reference to symbol 'clock_gettime@@GLIBC_2.4'
    /home/femtotech/dev/rpi/gcc-4.7-linaro-rpi-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.7.2/../../../../arm-linux-gnueabihf/bin/ld: note: 'clock_gettime@@GLIBC_2.4' is defined in DSO /mnt/rasp-pi-rootfs/lib/arm-linux-gnueabihf/librt.so.1 so try adding it to the linker command line
    /mnt/rasp-pi-rootfs/lib/arm-linux-gnueabihf/librt.so.1: could not read symbols: Invalid operation
    collect2: error: ld returned 1 exit status
    make: *** [glib] Error 1
    Glib disabled.
    @

    But the /mnt/rasp-pi-rootfs/lib/arm-linux-gnueabihf/librt.so.1 is there, actually.

    Any ideas?



  • Dear Mark,
    Please check the link to librt.so.1
    Maybe it's broken



  • I cross compile Qt 5.2 for imx6 from source and ./configure just dont try find gstreamer from rootfs. I look at ./configure inside and dont find anything about gstreamer. What can I do?



  • [quote author="_dmp" date="1386143087"]I cross compile Qt 5.2 for imx6 from source and ./configure just dont try find gstreamer from rootfs. I look at ./configure inside and dont find anything about gstreamer. What can I do?[/quote]

    Have you solved this problem?
    I'm working on it too.



  • I did not try to cross-compile neither Qt nor GStreamer. So this is just my guess.
    On Linux Qt configure tries to find gstreamer using pkg-config utility.
    pkg-config uses $PKG_CONFIG_PATH to look for all available packages.
    The packages are the text files with simple structure and .pc extension.

    Try to find gstreamer*.pc files in your cross-compiled gstreamer and if you find the files then append a path to these files to PKG_CONFIG_PATH environment variable and then run configure from Qt.



  • Is there meanwhile a solution on how to configure Qt5.3 to use gstreamer? I have the same Problem on the Raspberry Pi.

    I'm using this tutorial: http://qt-project.org/wiki/Native_Build_of_Qt5_on_a_Raspberry_Pi
    I ignored the change of "QT_CFLAGS_GSTREAMER=" in the configure script, because it is not there. Additionally I set the following environment variables before running configure to get "pkg-config ............. yes":
    @PKG_CONFIG_LIBDIR="/usr/lib/pkgconfig:/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig"
    PKG_CONFIG_SYSROOT_DIR="/."
    PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig"@

    I read a little bit in the configure script code and at the part where the "Configure summary" is generated I found nothing where it is possible to add additional Packages (for example found by pkg-config) so is it even possible that the configure script finds gstreamer or is it even searching?


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Did you install the gstreamer development packages ?



  • yes I have installed all packages which are listed on the "wiki page":http://qt-project.org/wiki/Native_Build_of_Qt5_on_a_Raspberry_Pi (first code section line 3). For gstreamer this are the following:
    @libgstreamer0.10-dev
    libgstreamer-plugins-base0.10-dev
    gstreamer-tools
    gstreamer0.10-plugins-good
    gstreamer0.10-plugins-bad@

    gstreamer itselfs works:
    @gst-launch-0.10 videotestsrc ! video/x-raw-rgb, framerate=25/1, width=640, height=360 ! ffmpegcolorspace ! fbdevsink@


  • Lifetime Qt Champion

    Did you do that on your Raspberry Pi ?



  • yes, all direct on the pi, not cross compiling


  • Lifetime Qt Champion

    Do you have your Pi root filesystem accessible on your desktop computer ?



  • yes i just had to put the Raspi SD Card in the Computer and mount it


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.