Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Installation and Deployment
  4. problem with QMediaPlayer
Forum Update on Monday, May 27th 2025

problem with QMediaPlayer

Scheduled Pinned Locked Moved Unsolved Installation and Deployment
8 Posts 3 Posters 2.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • V Offline
    V Offline
    valeriy
    wrote on 26 Feb 2016, 10:40 last edited by
    #1

    i created resourse file and added mp3 file
    write 3 lines:

    QMediaPlayer* player = new QMediaPlayer();
    player->setMedia(QUrl("qrc:/sounds/psk.mp3"));
    player->play();
    

    application is started, there is win process, but does not appear on the screen
    later, i changed code:

    QMediaPlayer* player = new QMediaPlayer();
    player->setMedia(QUrl(":/sounds/psk.mp3"));
    player->play();
    

    application is run on the screen, but now sound not play

    my .pro file

    QT += core gui multimedia
    
    TARGET = test_cpp
    CONFIG += console c++11
    CONFIG -= app_bundle
    
    TEMPLATE = app
    
    SOURCES += main.cpp \
        Figure.cpp \
        GameField.cpp
    
    HEADERS += \
        Figure.h \
        GameField.h
    
    RESOURCES += \
        res.qrc
    

    what am I doing wrong?

    1 Reply Last reply
    0
    • S Offline
      S Offline
      SGaist
      Lifetime Qt Champion
      wrote on 26 Feb 2016, 23:31 last edited by
      #2

      Hi,

      Do you mean that with qrc:/ the sound is playing but you have no UI ?

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      V 1 Reply Last reply 28 Feb 2016, 15:34
      0
      • S SGaist
        26 Feb 2016, 23:31

        Hi,

        Do you mean that with qrc:/ the sound is playing but you have no UI ?

        V Offline
        V Offline
        valeriy
        wrote on 28 Feb 2016, 15:34 last edited by valeriy
        #3

        @SGaist said:

        Hi,

        Do you mean that with qrc:/ the sound is playing but you have no UI ?

        sound isn't playing and the application does not appear on the screen.
        If i change qrc:/ to :/, sound isn`t playing, but application is running normally.
        I noticed that happens only in this class:

        class Button : public QObject, public QGraphicsPixmapItem
        {
            Q_OBJECT
        private:
            QPixmap *state1, *state2;
            void mousePressEvent(QGraphicsSceneMouseEvent *event);
            void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
            void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
         
            //QMediaPlayer *hoverSound;
         
        public:
            Button(const QPixmap& pixmap1, const QPixmap& pixmap2);
            ~Button();
         
        signals:
            void clicked();
        };
        

        ps. sorry for my english :(

        1 Reply Last reply
        0
        • S Offline
          S Offline
          SGaist
          Lifetime Qt Champion
          wrote on 28 Feb 2016, 20:11 last edited by
          #4

          Depending on your target platform reading from qrc is not possible. That's not a Qt limitation but a platform constraint. The native API used are not able to access data from Qt's resource. You should copy the file to a temporary folder provided by QStandardPaths and play it from there.

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          M 1 Reply Last reply 28 Feb 2016, 21:56
          0
          • S SGaist
            28 Feb 2016, 20:11

            Depending on your target platform reading from qrc is not possible. That's not a Qt limitation but a platform constraint. The native API used are not able to access data from Qt's resource. You should copy the file to a temporary folder provided by QStandardPaths and play it from there.

            M Offline
            M Offline
            MajidKamali
            wrote on 28 Feb 2016, 21:56 last edited by
            #5

            I had the same problem.
            It's because QMediaPlayer needs a QUrl and QUrl must start with something like qrc:/ or http:/ etc. otherwise string is an invalid QUrl and QUrl becomes empty.

            QUrl url1("qrc:/path to your file in resources");
            QUrl url2(":/path to your file in resources");
            qDebug() << url1;
            qDebug() << url2;
            

            url2 is empty. because it's not a valid url.
            I don't know if it is possible to disable validation in QUrl or not.
            I add a "qrc" manually to my string when passing to QUrl

            QUrl url("qrc" + ":/path to file in resources");
            

            @SGaist why there is no access to library or binary file in some platforms? resources are internal and are in application binary.

            1 Reply Last reply
            0
            • S Offline
              S Offline
              SGaist
              Lifetime Qt Champion
              wrote on 28 Feb 2016, 22:17 last edited by
              #6

              Your url1 should be correct.

              What Version of Qt are you using ? On what platform ?

              I've doubled checked the implementation of QMediaPlayer, if you have a recent enough Qt, it should do the temporary file trick automatically for you.

              It's because the native API don't know how to handle files in Qt's resources.

              Interested in AI ? www.idiap.ch
              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

              M 1 Reply Last reply 29 Feb 2016, 00:48
              0
              • S SGaist
                28 Feb 2016, 22:17

                Your url1 should be correct.

                What Version of Qt are you using ? On what platform ?

                I've doubled checked the implementation of QMediaPlayer, if you have a recent enough Qt, it should do the temporary file trick automatically for you.

                It's because the native API don't know how to handle files in Qt's resources.

                M Offline
                M Offline
                MajidKamali
                wrote on 29 Feb 2016, 00:48 last edited by
                #7

                @SGaist I use Qt 5.4.1 on Ubuntu 14.04 64-bit

                1 Reply Last reply
                0
                • S Offline
                  S Offline
                  SGaist
                  Lifetime Qt Champion
                  wrote on 29 Feb 2016, 21:42 last edited by
                  #8

                  It's been added to Qt 5.5.0

                  Interested in AI ? www.idiap.ch
                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  0

                  1/8

                  26 Feb 2016, 10:40

                  • Login

                  • Login or register to search.
                  1 out of 8
                  • First post
                    1/8
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • Users
                  • Groups
                  • Search
                  • Get Qt Extensions
                  • Unsolved