Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

"Qt5GStreamer-1.0 development package not found"



  • Hi, I want to use qt-gstreamer-1.2.0.
    So I installed qt-gstreamer and open qt-gstreamer example "player.pro" in Qt5.5.1.

    And I tried to build it. But I got the message:
    :-1: error: Qt5GStreamer-1.0 development package not found

    player.pro:

    # This is a qmake project file, provided as an example on how to use qmake with QtGStreamer.
    
    TEMPLATE = app
    TARGET = player
    
    # produce nice compilation output
    CONFIG += silent
    
    # Tell qmake to use pkg-config to find QtGStreamer.
    CONFIG += link_pkgconfig
    
    # Now tell qmake to link to QtGStreamer and also use its include path and Cflags.
    contains(QT_VERSION, ^4\\..*) {
      PKGCONFIG += QtGStreamer-1.0 QtGStreamerUi-1.0
    }
    contains(QT_VERSION, ^5\\..*) {
      PKGCONFIG += Qt5GStreamer-1.0 Qt5GStreamerUi-1.0
      QT += widgets
    }
    
    # Recommended if you are using g++ 4.5 or later. Must be removed for other compilers.
    #QMAKE_CXXFLAGS += -std=c++0x
    
    # Recommended, to avoid possible issues with the "emit" keyword
    # You can otherwise also define QT_NO_EMIT, but notice that this is not a documented Qt macro.
    DEFINES += QT_NO_KEYWORDS
    
    # Input
    HEADERS += mediaapp.h player.h
    SOURCES += main.cpp mediaapp.cpp player.cpp
    

    Also, I modified environment variables at .bashrc file:
    export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/hoyoung/qt-gstreamer/lib/x86_64-linux-gnu/pkgconfig/:home/hoyoung/Qt5.5.1/5.5/gcc_64/lib/pkgconfig/:/usr/lib/x86_64-linux-gnu/pkgconfig/

    export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR:/home/hoyoung/qt-gstreamer/lib/x86_64-linux-gnu/pkgconfig/:/home/hoyoung/Qt5.5.1/5.5/gcc_64/lib/pkgconfig/

    I would appreciate any kind of help.


  • Qt Champions 2019

    Did you install qt-gstreamer-dev package?



  • @jsulm Yes, I installed it:

    sudo apt-get install gstreamer1.0*
    sudo apt-get install libgstreamer1.0*



  • @jsulm
    And I also installed qt-gstreamer-1.2.0 at ~/qt-gstreamer


  • Lifetime Qt Champion

    Hi,

    Did you tell pkg-config where to find QtGstream .pc files?



  • @SGaist
    There are 'Qt5GStreamer-1.0.pc',
    'Qt5GLib-2.0.pc',
    'Qt5GStreamerQuick-1.0.pc',
    'Qt5GstreamerUi-1.0.pc' and
    'Qt5GstreamerUtils-1.0.pc'
    in '/home/hoyoung/qt-gstreamer/lib/x86_64-linux-gnu/pkgconfig/'



  • I reinstalled Qt5GStreamer.

    'Qt5Gstreamer-1.0.pc' files is now in /usr/local/lib/x86_64-linux/pkgconfig/'.

    I modified my .bashrc file.

    And then, There is not the error message "Qt5GStreamer-1.0 development package not found" any more.

    But other problems appeared. QtCreater couldn't find QGstreamer functions' definition. Like:

    In function `main':
    undefined reference to 'QGst::init(int*, char***);
    In function `Player::Player(QWidget*)':
    undefined reference to `QGst::Ui::VideoWidget::VideoWidget(QWidget*, QFlags<Qt::WindowType>)'
    undefined reference to `QGst::Ui::VideoWidget::~VideoWidget()'
    .
    .
    .
    

  • Qt Champions 2019

    It's the compiler/linker not QtCreator.
    You do not link your app against QGStreamer libraries or the linker cannot find them.



  • @jsulm Hi, thank you for replying
    Okay, I understand. the errors are link errors.

    I searched google constantly, but I didn't find how to fix it.
    Can you give any idea to sovle it?


  • Lifetime Qt Champion

    IIRC you need something like:

    PKGCONFIG += Qt5GStreamer-1.0 Qt5GLib-2.0
    

    If using QtQuick

    PKGCONFIG += Qt5GStreamerQuick-1.0
    


  • @SGaist Thank you but I tried it already

    Now I'm finding any mistake during install qt gstreamer 1.2.0..


  • Lifetime Qt Champion

    Silly question then, are you sure that the libraries are built for the right architecture ?



  • @SGaist I Think "yes".
    I really don't know why it did it.


  • Lifetime Qt Champion

    Can you check the link line in the compiler output panel to see if the libraries from QtGstreamer are there ?



  • @SGaist

    I checked the compiler output panel, as you said. but I couldn't find the link line.

    This is Compile Output

    Run qmake:

    10:28:45: Running steps for project player...
    10:28:45: Starting: "/home/hoyoung/Qt5.5.1/5.5/gcc_64/bin/qmake" /home/hoyoung/qt-gstreamer-1.2.0/examples/player/player.pro -r -spec linux-g++ CONFIG+=debug -Wall
    WARNING: /home/hoyoung/Qt5.5.1/5.5/gcc_64/mkspecs/features/qt.prf:101: Excess colon in front of opening brace.
    WARNING: /home/hoyoung/Qt5.5.1/5.5/gcc_64/mkspecs/features/qt.prf:244: Excess colon in front of opening brace.
    WARNING: /home/hoyoung/Qt5.5.1/5.5/gcc_64/mkspecs/features/qt.prf:255: Excess colon in front of opening brace.
    10:28:45: The process "/home/hoyoung/Qt5.5.1/5.5/gcc_64/bin/qmake" exited normally.
    10:28:45: Elapsed time: 00:00.
    

    Build:

    10:15:44: Running steps for project player...
    10:15:44: Configuration unchanged, skipping qmake step.
    10:15:44: Starting: "/usr/bin/make" 
    linking player
    main.o: In function `main':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/main.cpp:24: undefined reference to `QGst::init(int*, char***)'
    player.o: In function `Player::Player(QWidget*)':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:34: undefined reference to `QGst::Ui::VideoWidget::VideoWidget(QWidget*, QFlags<Qt::WindowType>)'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:34: undefined reference to `QGst::Ui::VideoWidget::~VideoWidget()'
    player.o: In function `Player::~Player()':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:44: undefined reference to `QGst::Element::setState(QGst::State)'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:45: undefined reference to `QGst::Ui::VideoWidget::stopPipelineWatch()'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:41: undefined reference to `QGst::Ui::VideoWidget::~VideoWidget()'
    player.o: In function `Player::setUri(QString const&)':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:59: undefined reference to `QGst::ElementFactory::make(char const*, char const*)'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:62: undefined reference to `QGst::Ui::VideoWidget::watchPipeline(QGlib::RefPointer<QGst::Pipeline> const&)'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:65: undefined reference to `QGst::Pipeline::bus() const'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:66: undefined reference to `QGst::Bus::addSignalWatch()'
    player.o: In function `Player::position() const':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:83: undefined reference to `QGst::PositionQuery::create(QGst::Format)'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:84: undefined reference to `QGst::Element::query(QGlib::RefPointer<QGst::Query> const&)'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:85: undefined reference to `QGst::PositionQuery::position() const'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:85: undefined reference to `QGst::ClockTime::toTime() const'
    player.o: In function `Player::setPosition(QTime const&)':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:97: undefined reference to `QGst::ClockTime::fromTime(QTime const&)'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:97: undefined reference to `QGst::SeekEvent::create(double, QGst::Format, QFlags<QGst::SeekFlag>, QGst::SeekType, long long, QGst::SeekType, long long)'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:99: undefined reference to `QGst::Element::sendEvent(QGlib::RefPointer<QGst::Event> const&)'
    player.o: In function `Player::volume() const':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:109: undefined reference to `QGst::StreamVolume::volume(QGst::StreamVolumeFormat) const'
    player.o: In function `Player::setVolume(int)':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:124: undefined reference to `QGst::StreamVolume::setVolume(double, QGst::StreamVolumeFormat)'
    player.o: In function `Player::length() const':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:134: undefined reference to `QGst::DurationQuery::create(QGst::Format)'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:135: undefined reference to `QGst::Element::query(QGlib::RefPointer<QGst::Query> const&)'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:136: undefined reference to `QGst::DurationQuery::duration() const'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:136: undefined reference to `QGst::ClockTime::toTime() const'
    player.o: In function `Player::state() const':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:144: undefined reference to `QGst::Element::currentState() const'
    player.o: In function `Player::play()':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:150: undefined reference to `QGst::Element::setState(QGst::State)'
    player.o: In function `Player::pause()':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:157: undefined reference to `QGst::Element::setState(QGst::State)'
    player.o: In function `Player::stop()':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:164: undefined reference to `QGst::Element::setState(QGst::State)'
    player.o: In function `Player::onBusMessage(QGlib::RefPointer<QGst::Message> const&)':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:175: undefined reference to `QGst::Message::type() const'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:180: undefined reference to `QGst::ErrorMessage::error() const'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:180: undefined reference to `QGlib::operator<<(QDebug, QGlib::Error const&)'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:180: undefined reference to `QGlib::Error::~Error()'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:184: undefined reference to `QGst::Message::source() const'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:180: undefined reference to `QGlib::Error::~Error()'
    player.o: In function `Player::handlePipelineStateChange(QGlib::RefPointer<QGst::StateChangedMessage> const&)':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:195: undefined reference to `QGst::StateChangedMessage::newState() const'
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/../player/player.cpp:202: undefined reference to `QGst::StateChangedMessage::oldState() const'
    player.o: In function `Player::qt_metacast(char const*)':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/./moc_player.cpp:132: undefined reference to `QGst::Ui::VideoWidget::qt_metacast(char const*)'
    player.o: In function `Player::qt_metacall(QMetaObject::Call, int, void**)':
    /home/hoyoung/qt-gstreamer-1.2.0/examples/build-player-Desktop_Qt_5_5_1_GCC_64bit-Debug/./moc_player.cpp:137: undefined reference to `QGst::Ui::VideoWidget::qt_metacall(QMetaObject::Call, int, void**)'
    player.o: In function `QGlib::ValueImpl<QString>::set(QGlib::Value&, QString const&)':
    /usr/local/include/Qt5GStreamer/QGst/../QGlib/value.h:454: undefined reference to `QGlib::Value::setData(QGlib::Type, void const*)'
    player.o:(.data.rel.ro+0x0): undefined reference to `QGst::Ui::VideoWidget::staticMetaObject'
    player.o: In function `QGlib::Type QGlib::GetType<QGst::Message>()':
    /usr/local/include/Qt5GStreamer/QGst/../QGlib/type.h:182: undefined reference to `QGlib::GetTypeImpl<QGst::Message>::operator QGlib::Type()'
    player.o: In function `QGlib::Type QGlib::GetType<QGst::StreamVolume>()':
    /usr/local/include/Qt5GStreamer/QGst/../QGlib/type.h:182: undefined reference to `QGlib::GetTypeImpl<QGst::StreamVolume>::operator QGlib::Type()'
    player.o: In function `bool QGlib::connect<Player, void, QGlib::RefPointer<QGst::Message> const&>(void*, char const*, Player*, void (Player::*)(QGlib::RefPointer<QGst::Message> const&), QFlags<QGlib::ConnectFlag>)':
    /usr/local/include/Qt5GStreamer/QGlib/connectimpl.h:197: undefined reference to `QGlib::Private::connect(void*, char const*, QGlib::Quark, void*, QSharedPointer<QGlib::Private::DestroyNotifierIface> const&, unsigned int, QGlib::Private::ClosureDataBase*, QFlags<QGlib::ConnectFlag>)'
    player.o: In function `void QGlib::ObjectBase::setProperty<QString>(char const*, QString const&)':
    /usr/local/include/Qt5GStreamer/QGst/../QGlib/object.h:108: undefined reference to `QGlib::ObjectBase::findProperty(char const*) const'
    /usr/local/include/Qt5GStreamer/QGst/../QGlib/object.h:110: undefined reference to `QGlib::Value::Value()'
    /usr/local/include/Qt5GStreamer/QGst/../QGlib/object.h:111: undefined reference to `QGlib::ParamSpec::valueType() const'
    /usr/local/include/Qt5GStreamer/QGst/../QGlib/object.h:111: undefined reference to `QGlib::Value::init(QGlib::Type)'
    /usr/local/include/Qt5GStreamer/QGst/../QGlib/object.h:113: undefined reference to `QGlib::ObjectBase::setProperty(char const*, QGlib::Value const&)'
    /usr/local/include/Qt5GStreamer/QGst/../QGlib/object.h:113: undefined reference to `QGlib::Value::~Value()'
    /usr/local/include/Qt5GStreamer/QGst/../QGlib/object.h:113: undefined reference to `QGlib::Value::~Value()'
    player.o: In function `QGlib::Private::GetDestroyNotifier<Player, void>::operator QSharedPointer<QGlib::Private::DestroyNotifierIface>()':
    /usr/local/include/Qt5GStreamer/QGlib/connect.h:254: undefined reference to `QGlib::Private::QObjectDestroyNotifier::instance()'
    player.o: In function `QGlib::Private::IfaceDynamicCastImpl<QGst::Pipeline, QGst::StreamVolume, void>::doCast(_GstStreamVolume*)':
    /usr/local/include/Qt5GStreamer/QGst/../QGlib/refpointer.h:408: undefined reference to `QGlib::Type::fromInstance(void*)'
    /usr/local/include/Qt5GStreamer/QGst/../QGlib/refpointer.h:408: undefined reference to `QGlib::Type::isA(QGlib::Type) const'
    /usr/local/include/Qt5GStreamer/QGst/../QGlib/refpointer.h:410: undefined reference to `QGlib::Private::wrapInterface(QGlib::Type, void*)'
    player.o:(.data.rel.ro._ZTV6Player[_ZTV6Player]+0x100): undefined reference to `QGst::Ui::VideoWidget::paintEvent(QPaintEvent*)'
    player.o:(.data.rel.ro._ZTIN4QGst7MessageE[_ZTIN4QGst7MessageE]+0x10): undefined reference to `typeinfo for QGst::MiniObject'
    player.o:(.data.rel.ro._ZTI6Player[_ZTI6Player]+0x10): undefined reference to `typeinfo for QGst::Ui::VideoWidget'
    player.o:(.data.rel.ro._ZTIN4QGst7ElementE[_ZTIN4QGst7ElementE]+0x10): undefined reference to `typeinfo for QGst::Object'
    player.o:(.data.rel.ro._ZTIN5QGlib9InterfaceE[_ZTIN5QGlib9InterfaceE]+0x18): undefined reference to `typeinfo for QGlib::ObjectBase'
    player.o: In function `QGlib::ValueImpl<QGlib::RefPointer<QGst::Message> >::get(QGlib::Value const&)':
    /usr/local/include/Qt5GStreamer/QGst/../QGlib/value.h:388: undefined reference to `QGlib::Value::getData(QGlib::Type, void*) const'
    player.o: In function `QGlib::WrapImpl<QGst::Message, void>::wrap(_GstMessage*)':
    /usr/local/include/Qt5GStreamer/QGst/miniobject.h:60: undefined reference to `QGst::Private::wrapMiniObject(void*)'
    collect2: error: ld returned 1 exit status
    make: *** [player] Error 1
    10:15:44: The process "/usr/bin/make" exited with code 2.
    Error while building/deploying project player (kit: Desktop Qt 5.5.1 GCC 64bit)
    When executing step "Make"
    10:15:44: Elapsed time: 00:00.
    

    I checked the "init.h". and I'm trying to find 'GStreamer' library.

    a part of "QGst/Init.h":

        QTGSTREAMER_EXPORT void init(int *argc, char **argv[]);
    
        /*! Clean up any resources created by GStreamer in init().
         *
         * It is normally not needed to call this function in a normal application as the resources
         * will automatically be freed when the program terminates. This function is therefore mostly
         * used by testsuites and other memory profiling tools.
         *
         * After this call GStreamer (including this method) should not be used anymore.
         *
         * \note You need to include <QGst/Init> to use this function.
         */
    


  • Did anybody got the luck to know the reason for:
    "Project ERROR: Package Qt5GStreamerQuick-1.0 not found".

    I have installed: qt-gstreamer-dev package
    Not working even after manually adding PKG_CONFIG_LIBDIR:
    export PKG_CONFIG_LIBDIR=/home/manojsahu/qt-gstreamer-1.2.0/src/QGst/QtGStreamer-1.0.pc.in

    I have also added PKGCONFIG alternatively in .pro file like:
    PKGCONFIG += Qt5GStreamerQuick-1.0
    PKGCONFIG += QtGStreamer-1.0

    Can anybody help to resolve this error.
    I am trying to compile example in below mentioned link:

    https://github.com/detrout/qt-gstreamer/tree/master/examples/qmlplayer


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    It's PKG_CONFIG_PATH that you should modify in order to add new paths to search .pc files.

    Where are you calling export ?



  • I am calling export PKG_CONFIG_PATH in my example code directory.


  • Lifetime Qt Champion

    Are you opening Qt Creator from that terminal ? If not then it won't use the environment variable since it has only been exported in this terminal.


Log in to reply