QMediaPlayer fails to play on a specific computer



  • Hi,
    I've been dealing with this issue for a long time, I didn't find a solution on this forum or anywhere else, so I decided to ask the community for some help.

    I've developed a simple Qt 5.2 (msvc2012 with ANGLE) application that uses QMediaplayer to play WMV files. Everything works fine on the Virtual Machine that I use as a development environment (Windows 7 Professional 32bit), everything works fine on the office's laptop (Windows 7 Professional 64 bit), but when it comes to run on my Panasonic CF-19 Toughbook it doesn't work.

    The error is: "Unsupported media, a codec is missing."

    Windows Media Player plays the movies smoothly.

    I tried to:

    • update the graphic card driver
    • install the k-lite codec pack
    • run the program as administrator
    • re-build the QtMultimedia component to get the direct show plugin

    I also tried different movie formats (I downloaded several clips from http://samples.mplayerhq.hu/) to check whether it was actually a matter of codec.

    None of these steps worked for me. And the worst thing is that SOMETIMES (randomly, very rarely) the application works and plays the movie just fine, driving me completely nuts.

    As a last resort, I tried to copy the Virtual Machine that I use as a development environment on the CF-19 laptop, and it works! So, I guess, it's not the CF-19 crappy graphic card.

    Any idea or suggestion?



  • Hi Budiulik,
    Is it possible that you have a different Qt version on that specific computer. I once had an issue where my msvc2012 Qt version would not work while MinGW did.
    Also since you know it is a software issue maybe using dependency walker can help you see if something is missing.



  • Hi ealione, and thank you for your answer.

    @ealione said:

    Is it possible that you have a different Qt version on that specific computer. I once had an issue where my msvc2012 Qt version would not work while MinGW did.

    Unfortunately this is not the case. I installed the same version of the Qt library on all the computers where I tried to run my program (Qt 5.2.1 msvc2012 not OpenGL). I also tried to use Qt 5.2.1 MinGW with no success.

    @ealione said:

    Also since you know it is a software issue maybe using dependency walker can help you see if something is missing.

    Dependency Walker does not highlight anything relevant: just a bunch of Windows 7 libraries which is unable to resolve (http://stackoverflow.com/questions/17023419/win-7-64-bit-dll-problems), but nothing to do with the problem. Furthermore, Dependency Walker has the same output on all the computers.



  • Yet I will insist on the compiler theory, simply because there is no other thing that could be messing things up. As you said it is a software issue, so your compiler and/or OpenGL are probably to blame.

    Maybe if you tried deploying your app from your other machine and running it on the CF-19.

    PS: Also do you have any idea what version of OpenGl does your graphics card support?



  • OpenGL shouldn't be involved at all... since I supposed the CF-19's graphic card OpenGL support to be poor, I decided to use ANGLE (a sort of middleware that addresses OpenGL calls to the DirectX libraries).

    Anyway I am using the very same deployment folder on every computer (I'm not using an installer since my application is very simple), so it's puzzling me.

    I will keep on looking for a solution.



  • What OS are you running on Panasonic CF-19 Toughbook?
    64-bit or 32-bit?



  • Hi, 32bit Windows 7 Home Edition.

    Anyway maybe I found a workaround. In case an error occurs when trying to play the movie, there is a maximum number of retries...
    I have done this because my suspect is that, due to the CF-19 "poor" performances, the libraries aren't (fully) loaded when the movie is played.

    I will keep you up to date whether this is or this is not THE solution, for anyone else's benefit.

    Thanks to everybody!



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