Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Can't play video on windows xp
Forum Updated to NodeBB v4.3 + New Features

Can't play video on windows xp

Scheduled Pinned Locked Moved Unsolved General and Desktop
30 Posts 4 Posters 5.8k Views 2 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.
  • LinArcXL Offline
    LinArcXL Offline
    LinArcX
    wrote on last edited by LinArcX
    #1

    Hi.
    I compiled qt 5.6.3 on windows 7 with help of MSVC2013: (Target -> windows xp)

    configure -debug-and-release -opensource -confirm-license -opengl dynamic -no-warnings-are-errors -nomake examples -nomake tests -skip qtwebengine -skip qtandroidextras -skip qtmacextras -skip qtx11extras -target xp -prefix E:\myqt\build\single\5.6.3
    

    And i used qt-multimedia to show a video to user.

    When i deploy application into windows xp, video doesn't play and i get an empty screen.(BTW, it's widget based application)

    When i run my app on windows 7 via qt-creator, i got following message:
    defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer" :45.753 INFO WFS_OPEN_COMPLETE

    I know that on windows xp, qt uses directShow:
    https://doc.qt.io/qt-5/qtmultimedia-windows.html

    But i don't know why it won't work!

    And i also installed bunch of codec-pack softwares on xp, like:

    1. K-Lite CodecPack
    2. ffdshow
    3. MediaPlayer CodecPack.

    But none of them help me to watch the video.

    1 Reply Last reply
    0
    • LinArcXL Offline
      LinArcXL Offline
      LinArcX
      wrote on last edited by LinArcX
      #2

      An interesting thing that i found is that if i use windeployqt to deploy .dlls to build directory and then run the application, i will get this message and video won't show:

      defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer" :45.753 INFO WFS_OPEN_COMPLETE

      But if i clean the build directory, and compile the project through qt-creator and run it again, video shows!

      Seems qt-creator do a magic behind the scene!

      1 Reply Last reply
      0
      • B Offline
        B Offline
        Bonnie
        wrote on last edited by Bonnie
        #3

        What do you have in your mediaservice plugin folder of the deployed directory?

        LinArcXL 1 Reply Last reply
        1
        • B Bonnie

          What do you have in your mediaservice plugin folder of the deployed directory?

          LinArcXL Offline
          LinArcXL Offline
          LinArcX
          wrote on last edited by LinArcX
          #4

          @Bonnie 3 files:

          1. dsengine.dll
          2. qtmedia_audioengine.dll
          3. wmfengine.dll

          Also i tried to compile multimedia module as described here:
          https://forum.qt.io/topic/28620/solved-qtmultimedia-defaultserviceprovider-requestservice-no-service-found-for-org-qt-project-qt-mediaplayer/10#

          And replace this new mediaservice directory with previous one. But nothing changed

          B 1 Reply Last reply
          0
          • LinArcXL LinArcX

            @Bonnie 3 files:

            1. dsengine.dll
            2. qtmedia_audioengine.dll
            3. wmfengine.dll

            Also i tried to compile multimedia module as described here:
            https://forum.qt.io/topic/28620/solved-qtmultimedia-defaultserviceprovider-requestservice-no-service-found-for-org-qt-project-qt-mediaplayer/10#

            And replace this new mediaservice directory with previous one. But nothing changed

            B Offline
            B Offline
            Bonnie
            wrote on last edited by Bonnie
            #5

            @LinArcX
            Hey, since you said when you start from qt-creator, it works, so let's first start with the original dlls from the unmodified .pro file.
            Have you tried using environment variable QT_DEBUG_PLUGINS=1 to check from the output about these plugins (dsengine.dll and wmfengine.dll) loaded or not?
            Another thing that confuses me, when you start it from qt-creator, is that also on xp? (I remember that xp cannot install msvc2013)
            Usually qt-creator's magic is just finding the installed Qt path and using the plugins there.

            LinArcXL 1 Reply Last reply
            2
            • B Bonnie

              @LinArcX
              Hey, since you said when you start from qt-creator, it works, so let's first start with the original dlls from the unmodified .pro file.
              Have you tried using environment variable QT_DEBUG_PLUGINS=1 to check from the output about these plugins (dsengine.dll and wmfengine.dll) loaded or not?
              Another thing that confuses me, when you start it from qt-creator, is that also on xp? (I remember that xp cannot install msvc2013)
              Usually qt-creator's magic is just finding the installed Qt path and using the plugins there.

              LinArcXL Offline
              LinArcXL Offline
              LinArcX
              wrote on last edited by
              #6

              @Bonnie

              This is the log of application when running through qt-creator with QT_DEBUG_PLUGINS=1

              when you start it from qt-creator, is that also on xp?

              No, i installed qt-creator, msvc2013 on windows7. On XP just installed Visual C++ 2013 Redistributable, since it's a runtime dependency of my app.

              B 1 Reply Last reply
              0
              • LinArcXL LinArcX

                @Bonnie

                This is the log of application when running through qt-creator with QT_DEBUG_PLUGINS=1

                when you start it from qt-creator, is that also on xp?

                No, i installed qt-creator, msvc2013 on windows7. On XP just installed Visual C++ 2013 Redistributable, since it's a runtime dependency of my app.

                B Offline
                B Offline
                Bonnie
                wrote on last edited by Bonnie
                #7

                @LinArcX
                Running through qt-creator works, didn't you say that?
                So we don't need the output for that, we need the output when mediaplayer cannot work, that means running the application from your deployed directory .
                But there're two different situations:

                1. Running the application without qt-creator on the same machine you have your qt-creator. Does that work?. Even not, I'm sure this will eventually work, as long as it can loaded the right plugins just as running from qt-creator.
                2. Running the application on your xp machine. This would be different with running on windows 7 since the default mediaplayer plugin of msvc builds on vista+ is WMF, but WMF may be not available on xp. So it would also be helpful to see what plugins does it load.
                LinArcXL 1 Reply Last reply
                2
                • B Bonnie

                  @LinArcX
                  Running through qt-creator works, didn't you say that?
                  So we don't need the output for that, we need the output when mediaplayer cannot work, that means running the application from your deployed directory .
                  But there're two different situations:

                  1. Running the application without qt-creator on the same machine you have your qt-creator. Does that work?. Even not, I'm sure this will eventually work, as long as it can loaded the right plugins just as running from qt-creator.
                  2. Running the application on your xp machine. This would be different with running on windows 7 since the default mediaplayer plugin of msvc builds on vista+ is WMF, but WMF may be not available on xp. So it would also be helpful to see what plugins does it load.
                  LinArcXL Offline
                  LinArcXL Offline
                  LinArcX
                  wrote on last edited by LinArcX
                  #8

                  @Bonnie

                  So we don't need the output for that, we need the output when mediaplayer cannot work...

                  My mistake. sorry.

                  1. Running the application without qt-creator on the same machine you have your qt-creator. Does that work?

                  Surprisingly yes, I didn't know why this time it worked!

                  (Also i'v noticed that setting QT_DEBUG_PLUGINS=1 and then run my .exe file doesn't show any debug output info. i don't know why)

                  1. Running the application on your xp machine...

                  I opened cmd.exe in deployed directory and:

                  SET PATH=QT_DEBUG_PLUGINS=1;%PATH%

                  And run my application:

                  MyQtWidgetsTest.exe > output.txt 2>&1

                  But it didn't generate output.txt file.

                  B 1 Reply Last reply
                  0
                  • LinArcXL LinArcX

                    @Bonnie

                    So we don't need the output for that, we need the output when mediaplayer cannot work...

                    My mistake. sorry.

                    1. Running the application without qt-creator on the same machine you have your qt-creator. Does that work?

                    Surprisingly yes, I didn't know why this time it worked!

                    (Also i'v noticed that setting QT_DEBUG_PLUGINS=1 and then run my .exe file doesn't show any debug output info. i don't know why)

                    1. Running the application on your xp machine...

                    I opened cmd.exe in deployed directory and:

                    SET PATH=QT_DEBUG_PLUGINS=1;%PATH%

                    And run my application:

                    MyQtWidgetsTest.exe > output.txt 2>&1

                    But it didn't generate output.txt file.

                    B Offline
                    B Offline
                    Bonnie
                    wrote on last edited by
                    #9

                    @LinArcX
                    It uses OutputDebugString on windows instead of stdout/stderr, so the output can't be redirected.
                    One solution is to use DebugView.
                    (BTW, your above command to set environment variable is not right.)
                    Open DebugView, then in cmd.exe:

                    SET QT_DEBUG_PLUGINS=1
                    MyQtWidgetsTest.exe
                    

                    The output will be shown in DebugView.

                    LinArcXL 1 Reply Last reply
                    2
                    • B Bonnie

                      @LinArcX
                      It uses OutputDebugString on windows instead of stdout/stderr, so the output can't be redirected.
                      One solution is to use DebugView.
                      (BTW, your above command to set environment variable is not right.)
                      Open DebugView, then in cmd.exe:

                      SET QT_DEBUG_PLUGINS=1
                      MyQtWidgetsTest.exe
                      

                      The output will be shown in DebugView.

                      LinArcXL Offline
                      LinArcXL Offline
                      LinArcX
                      wrote on last edited by LinArcX
                      #10

                      @Bonnie
                      Here you are:
                      https://gist.github.com/LinArcX/f124ffb178d4c1d84c84e7e39f37f3a3

                      B 1 Reply Last reply
                      0
                      • LinArcXL LinArcX

                        @Bonnie
                        Here you are:
                        https://gist.github.com/LinArcX/f124ffb178d4c1d84c84e7e39f37f3a3

                        B Offline
                        B Offline
                        Bonnie
                        wrote on last edited by Bonnie
                        #11

                        @LinArcX
                        I think the key point is

                        QLibraryPrivate::loadPlugin failed on "Z:/workspace/c++/qt/build-AtmQtWidgetsTest-Desktop_Qt_5_6_3_MSVC2013_32_bit-Release/release/mediaservice/dsengine.dll" : "Cannot load library Z:\\workspace\\c++\\qt\\build-AtmQtWidgetsTest-Desktop_Qt_5_6_3_MSVC2013_32_bit-Release\\release\\mediaservice\\dsengine.dll: The specified module could not be found.
                        

                        That usually means there're some dependency dlls missing so the plugin dll cannot be loaded.
                        Try using DependencyWalker to open dsengine.dll to check the dependencies.
                        Maybe xp needs to install directx? I'm not sure...

                        LinArcXL 1 Reply Last reply
                        1
                        • B Bonnie

                          @LinArcX
                          I think the key point is

                          QLibraryPrivate::loadPlugin failed on "Z:/workspace/c++/qt/build-AtmQtWidgetsTest-Desktop_Qt_5_6_3_MSVC2013_32_bit-Release/release/mediaservice/dsengine.dll" : "Cannot load library Z:\\workspace\\c++\\qt\\build-AtmQtWidgetsTest-Desktop_Qt_5_6_3_MSVC2013_32_bit-Release\\release\\mediaservice\\dsengine.dll: The specified module could not be found.
                          

                          That usually means there're some dependency dlls missing so the plugin dll cannot be loaded.
                          Try using DependencyWalker to open dsengine.dll to check the dependencies.
                          Maybe xp needs to install directx? I'm not sure...

                          LinArcXL Offline
                          LinArcXL Offline
                          LinArcX
                          wrote on last edited by LinArcX
                          #12

                          @Bonnie

                          Hmmm.. Interesing. This is the output of dependency walker on dsengine.dll:

                          • c:\windows\system32\GDI32.DLL
                          • c:\windows\system32\MF.DLL
                          • c:\windows\system32\MFPLAT.DLL
                          • c:\windows\system32\D3D9.DLL
                          • c:\windows\system32\DXVA2.DLL
                          • c:\windows\system32\WINMM.DLL
                          • c:\windows\system32\EVR.DLL
                          • c:\windows\system32\OLE32.DLL
                          • c:\windows\system32\OLEAUT32.DLL
                          • c:\tools\neovim\neovim\bin\QT5WIDGETS.DLL
                          • c:\tools\neovim\neovim\bin\QT5GUI.DLL
                          • c:\tools\neovim\neovim\bin\QT5CORE.DLL
                          • c:\windows\system32\USER32.DLL
                          • c:\windows\system32\MSVCP120.DLL
                          • c:\windows\system32\MSVCR120.DLL
                          • c:\windows\system32\KERNEL32.DLL

                          So, yes. Seems it depends on D3D9.dll that is parts of DirectX. But I installed DirectX 9 on windows xp and checked that d3d9.dll exists in c:\windows\system32.

                          Edit: I've noticed that except mf.dll and mfplat.dll other dlls exists in c:\windows\system32.

                          B 1 Reply Last reply
                          0
                          • LinArcXL LinArcX

                            @Bonnie

                            Hmmm.. Interesing. This is the output of dependency walker on dsengine.dll:

                            • c:\windows\system32\GDI32.DLL
                            • c:\windows\system32\MF.DLL
                            • c:\windows\system32\MFPLAT.DLL
                            • c:\windows\system32\D3D9.DLL
                            • c:\windows\system32\DXVA2.DLL
                            • c:\windows\system32\WINMM.DLL
                            • c:\windows\system32\EVR.DLL
                            • c:\windows\system32\OLE32.DLL
                            • c:\windows\system32\OLEAUT32.DLL
                            • c:\tools\neovim\neovim\bin\QT5WIDGETS.DLL
                            • c:\tools\neovim\neovim\bin\QT5GUI.DLL
                            • c:\tools\neovim\neovim\bin\QT5CORE.DLL
                            • c:\windows\system32\USER32.DLL
                            • c:\windows\system32\MSVCP120.DLL
                            • c:\windows\system32\MSVCR120.DLL
                            • c:\windows\system32\KERNEL32.DLL

                            So, yes. Seems it depends on D3D9.dll that is parts of DirectX. But I installed DirectX 9 on windows xp and checked that d3d9.dll exists in c:\windows\system32.

                            Edit: I've noticed that except mf.dll and mfplat.dll other dlls exists in c:\windows\system32.

                            B Offline
                            B Offline
                            Bonnie
                            wrote on last edited by Bonnie
                            #13

                            @LinArcX
                            Well, this is not how we usually use dependency walker.
                            In the middle list area, check the yellow icons for missing dlls and red icons for dlls that missing functions.
                            Some can be ignored referring to https://www.dependencywalker.com/faq.html

                            Edit: If it depends on mf.dll and mfplat.dll, that can be the problem. Maybe your compiling links newer DX libs that not supporting xp.
                            Edit2: I've searched on google and others say that if mf.dll and mfplat.dll are lazy loaded, then that can also be ignored.

                            LinArcXL 2 Replies Last reply
                            2
                            • B Bonnie

                              @LinArcX
                              Well, this is not how we usually use dependency walker.
                              In the middle list area, check the yellow icons for missing dlls and red icons for dlls that missing functions.
                              Some can be ignored referring to https://www.dependencywalker.com/faq.html

                              Edit: If it depends on mf.dll and mfplat.dll, that can be the problem. Maybe your compiling links newer DX libs that not supporting xp.
                              Edit2: I've searched on google and others say that if mf.dll and mfplat.dll are lazy loaded, then that can also be ignored.

                              LinArcXL Offline
                              LinArcXL Offline
                              LinArcX
                              wrote on last edited by
                              #14

                              @Bonnie
                              Lazy loaded? What that means?

                              I download them from the internet and copy in system directory.

                              But nothing changed.

                              1 Reply Last reply
                              0
                              • B Bonnie

                                @LinArcX
                                Well, this is not how we usually use dependency walker.
                                In the middle list area, check the yellow icons for missing dlls and red icons for dlls that missing functions.
                                Some can be ignored referring to https://www.dependencywalker.com/faq.html

                                Edit: If it depends on mf.dll and mfplat.dll, that can be the problem. Maybe your compiling links newer DX libs that not supporting xp.
                                Edit2: I've searched on google and others say that if mf.dll and mfplat.dll are lazy loaded, then that can also be ignored.

                                LinArcXL Offline
                                LinArcXL Offline
                                LinArcX
                                wrote on last edited by LinArcX
                                #15

                                @Bonnie said in Can't play video on windows xp:

                                In the middle list area, check the yellow icons for missing dlls and red icons for dlls that missing functions.

                                depwalker.png

                                B 1 Reply Last reply
                                0
                                • LinArcXL LinArcX

                                  @Bonnie said in Can't play video on windows xp:

                                  In the middle list area, check the yellow icons for missing dlls and red icons for dlls that missing functions.

                                  depwalker.png

                                  B Offline
                                  B Offline
                                  Bonnie
                                  wrote on last edited by
                                  #16

                                  @LinArcX
                                  Lazy loaded dlls would have a hourglass mark with the icon, like MPR.DLL / IESHIMS.DLL in your picture.
                                  Your MF.DLL and MFPLAT.DLL seems to be direct linked, also your D3D9.dll is red so it may miss functions.
                                  I would guess it is due to the DX lib when you compile Qt, as I said.
                                  I don't have any 5.6.3 dlls on my machine but I have a deployed application of 5.5.1. Checking by dependency walker, the official prebuilt msvc2013 dsengine.dll of 5.5.1 doesn't depend on mf.dll and mfplat.dll directly.

                                  LinArcXL 1 Reply Last reply
                                  0
                                  • B Bonnie

                                    @LinArcX
                                    Lazy loaded dlls would have a hourglass mark with the icon, like MPR.DLL / IESHIMS.DLL in your picture.
                                    Your MF.DLL and MFPLAT.DLL seems to be direct linked, also your D3D9.dll is red so it may miss functions.
                                    I would guess it is due to the DX lib when you compile Qt, as I said.
                                    I don't have any 5.6.3 dlls on my machine but I have a deployed application of 5.5.1. Checking by dependency walker, the official prebuilt msvc2013 dsengine.dll of 5.5.1 doesn't depend on mf.dll and mfplat.dll directly.

                                    LinArcXL Offline
                                    LinArcXL Offline
                                    LinArcX
                                    wrote on last edited by
                                    #17

                                    @Bonnie

                                    Maybe your compiling links newer DX libs that not supporting xp. I would guess it is due to the DX lib when you compile Qt, as I said.

                                    You mean i should install Directx9 on my windows7, remove all other DirectX versions and compile qt5.6.3 again?

                                    B 1 Reply Last reply
                                    0
                                    • LinArcXL LinArcX

                                      @Bonnie

                                      Maybe your compiling links newer DX libs that not supporting xp. I would guess it is due to the DX lib when you compile Qt, as I said.

                                      You mean i should install Directx9 on my windows7, remove all other DirectX versions and compile qt5.6.3 again?

                                      B Offline
                                      B Offline
                                      Bonnie
                                      wrote on last edited by
                                      #18

                                      @LinArcX
                                      You may be able to compile only the dsengine plugin.
                                      But I don't know how to make sure you link the xp supported DX lib, since I don't target xp for at least 5 years...

                                      LinArcXL 1 Reply Last reply
                                      0
                                      • B Bonnie

                                        @LinArcX
                                        You may be able to compile only the dsengine plugin.
                                        But I don't know how to make sure you link the xp supported DX lib, since I don't target xp for at least 5 years...

                                        LinArcXL Offline
                                        LinArcXL Offline
                                        LinArcX
                                        wrote on last edited by
                                        #19

                                        @Bonnie
                                        What aboot this:

                                        https://forum.qt.io/topic/59838/building-qt-from-source-on-windows/7

                                        1 Reply Last reply
                                        0
                                        • hskoglundH Offline
                                          hskoglundH Offline
                                          hskoglund
                                          wrote on last edited by
                                          #20

                                          Hi, one other thing I saw in the dependency walker's output, it wants the Qt files from another Qt directory on your XP machine:
                                          c:\tools\neovim\neovim\bin

                                          Make sure that this other version exists and is also Qt 5.6.3 Release for MSVC 2013.

                                          LinArcXL 1 Reply Last reply
                                          1

                                          • Login

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