Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. QMediaPlayer “Failed to load media” on iOS
Forum Updated to NodeBB v4.3 + New Features

QMediaPlayer “Failed to load media” on iOS

Scheduled Pinned Locked Moved Mobile and Embedded
19 Posts 4 Posters 5.3k Views 4 Watching
  • 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.
  • canellasC Offline
    canellasC Offline
    canellas
    wrote on last edited by canellas
    #7

    SGaist,

    I really appreciate your help. Thanks a lot!

    I wrote a slot for 'error' signal from QAudioRecorder, which is actually inherited from QMediaRecorder, and it revealed the 'QMediaRecorder::ResourceError'.

    That happens in the simulator as well as on the iPhone.

    I am searching the web, but no luck so far.

    Any ideas?

    Thanks!

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #8

      Did you change the QUrl creation part like suggested ?

      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
      • canellasC Offline
        canellasC Offline
        canellas
        wrote on last edited by
        #9

        Sorry, I forgot to report that I've changed the QUrl construction, as you suggested, but with no different results

        1 Reply Last reply
        0
        • SGaistS Offline
          SGaistS Offline
          SGaist
          Lifetime Qt Champion
          wrote on last edited by
          #10

          Did you check that it's valid just in case ?

          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
          • canellasC Offline
            canellasC Offline
            canellas
            wrote on last edited by
            #11

            Yes, it was a valid path.

            1 Reply Last reply
            0
            • SGaistS Offline
              SGaistS Offline
              SGaist
              Lifetime Qt Champion
              wrote on last edited by
              #12

              I meant: did you validate that with QUrl ? With isValid and isLocalFile ?

              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
              • canellasC Offline
                canellasC Offline
                canellas
                wrote on last edited by
                #13

                I believe it is.

                The following code

                void Gravar::h6() {
                
                    qDebug() << "h6 >>>";
                
                    try {
                        set_current(playing);
                
                        qDebug() << "m_audio_recorder->outputLocation() = " << m_audio_recorder->outputLocation();
                
                        QString _path = m_audio_recorder->outputLocation().path();
                        qDebug() << "_path = " << _path;
                
                        QUrl _url (QUrl::fromLocalFile(_path));
                        qDebug() << "url = " << _url;
                
                        if  (!_url.isValid()) {
                            qDebug() << "INVALID URL!";
                            return;
                        }
                
                        qDebug() << "valid url";
                
                        if (!_url.isLocalFile()) {
                            qDebug() << "NOT A LOCAL FILE!";
                            return;
                        }
                
                        qDebug() << "local file";
                
                        QMediaContent _content(_url);
                        qDebug() << "h6-content '" << _content.canonicalUrl() << "'\n";
                
                        m_player->setMedia(_content);
                        m_player->setVolume(100);
                        m_player->play();
                    }
                    catch (std::exception & _ex) {
                        qDebug() << "FATAL: '" << _ex.what() << "'\n";
                        state_transition(reset);
                    }
                
                    qDebug() << "h6 <<<";
                }
                

                prints this output:

                h6 >>>
                m_audio_recorder->outputLocation() =  QUrl("file:///var/mobile/Containers/Data/Application/CBAAF069-4B9B-4521-9BB2-0754DBA3E24F/Documents/Music/28_94_1.wav")
                _path =  "/var/mobile/Containers/Data/Application/CBAAF069-4B9B-4521-9BB2-0754DBA3E24F/Documents/Music/28_94_1.wav"
                url =  QUrl("file:///var/mobile/Containers/Data/Application/CBAAF069-4B9B-4521-9BB2-0754DBA3E24F/Documents/Music/28_94_1.wav")
                valid url
                local file
                h6-content ' QUrl("file:///var/mobile/Containers/Data/Application/CBAAF069-4B9B-4521-9BB2-0754DBA3E24F/Documents/Music/28_94_1.wav") '
                
                h6 <<<
                

                I think it is very important to notice that when I call 'm_audio_recorder->record()', a slot I wrote for 'error' signal from QAudioRecorder prints 'Recording error: QMediaRecorder::ResourceError', and from there on, no signal is emitted anymore.

                Again, thanks a lot for your help.

                1 Reply Last reply
                0
                • NickVN Offline
                  NickVN Offline
                  NickV
                  wrote on last edited by
                  #14

                  You can try this in the .pro file:

                  QTPLUGIN += qtaudio_coreaudio

                  1 Reply Last reply
                  0
                  • canellasC Offline
                    canellasC Offline
                    canellas
                    wrote on last edited by
                    #15

                    I've already tried that, and I can do it again, but only tomorrow, because today I am trying to solve the problem of pausing the voice recording in Android.

                    I'll let you know the results.

                    Thanks!

                    1 Reply Last reply
                    0
                    • canellasC Offline
                      canellasC Offline
                      canellas
                      wrote on last edited by
                      #16

                      I found what is causing the error!

                      Running the app on a iPhone 5 real device, when I print the standard paths, I get:

                      DesktopLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Documents/Desktop"
                      DocumentsLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Documents"
                      ApplicationsLocation = ""
                      MusicLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Documents/Music"
                      MoviesLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Documents/Movies"
                      PicturesLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Documents/Pictures"
                      TempLocation = "/private/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/tmp"
                      HomeLocation = "/private/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738"
                      DataLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Library/Application Support/perinatal__app__app_mae"
                      CacheLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Library/Caches/perinatal__app__app_mae"
                      GenericDataLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Library/Application Support"
                      RuntimeLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Library/Application Support"
                      ConfigLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Library/Preferences"
                      GenericConfigLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Library/Preferences"
                      DownloadLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Documents/Downloads"
                      GenericCacheLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Library/Caches"
                      AppDataLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Library/Application Support/perinatal__app__app_mae"
                      AppLocalDataLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Library/Application Support/perinatal__app__app_mae"
                      AppConfigLocation = "/var/mobile/Containers/Data/Application/D424B7BE-6230-4868-8B85-09324C845738/Library/Preferences/perinatal__app__app_mae"

                      The first problem is that the all the paths starting with '/var/' are wrong, the actual path is '/private/var'. So, when I try to use 'MusicLocation', in the slot for the 'error' signal, 'QAudioRecorder::errorString' prints "Can't open output location". I can not prefix 'MusicLocation' with '/private' because this location changes between versions of iPhone.

                      Running the 'Examples/multimedia/audiorecorder' example, it is possible to navigate in the file system of the iPhone 5, and one can see that the '/var' directory is actually a link, but when you enter the directory, although one could expect to see the 'mobile' sub directory, there is nothing there.

                      The documentation for 'QStandardPaths::writableLocation(StandardLocation type)' says "Note: The storage location returned can be a directory that does not exist; i.e., it may need to be created by the system or the user.", but I can not create any directory below '/var', where ever it really is.

                      In the iPhone 6 simulator, the 'MusicLocation' is "/Users/canellas/Library/Application Support/iPhone Simulator/2.2/Documents/Music", wich does not exist, but I could create it. I do not know if I would be able to create it, if it was a real iPhone device.

                      I could not create the audio file at 'HomeLocation'. The only path that worked was 'TempLocation', on the iPhone 5 cell, and on the iPhone 6 simulator.

                      Does anyone know how correctly use 'QStandardPaths'? Or am I using it right, and there is a bug there?

                      Thanks a lot for reading all this! 8)

                      1 Reply Last reply
                      0
                      • SGaistS Offline
                        SGaistS Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on last edited by
                        #17

                        Which version of iOS are you running ?

                        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
                        • canellasC Offline
                          canellasC Offline
                          canellas
                          wrote on last edited by
                          #18

                          On the iPhone 5 it is 9.3.3 (13G34). On the iPhone 6s simulator it is 9.3 (13E30).

                          Thanks!

                          1 Reply Last reply
                          0
                          • G Offline
                            G Offline
                            GBergamo
                            wrote on last edited by
                            #19

                            Any update on this?

                            1 Reply Last reply
                            0

                            • Login

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