Can not play video with cmake but can with qmake

80 Views Asked by At

On Windows 10, after installing the video codecs with

winget install CodecGuide.K-LiteCodecPack.Basic

Using QtCreator, I can build and run the qmake project and it will play the video, https://file-examples.com/storage/fe7b7e0dc465e22bc9e6da8/2017/04/file_example_MP4_480_1_5MG.mp4

However, if I build it (on same machine) with cmake project it will not play. Instead it gives

DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80004005 (Unspecified error)

Any idea of what is going on here?

main.cpp

#include <QApplication>

#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QVideoWidget>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QMediaPlayer player;
    QMediaPlaylist playlist;
    QVideoWidget videoWidget;

    player.setVideoOutput(&videoWidget);
    player.setMedia(QUrl::fromLocalFile("../video.mp4"));
    player.play();

    videoWidget.show();
    videoWidget.resize(400, 300);

    return a.exec();
}

project.pro

QT += widgets multimedia multimediawidgets

SOURCES +=  main.cpp

cmakelists.txt

cmake_minimum_required(VERSION 3.20)

project(project)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

find_package(Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt5 COMPONENTS Multimedia REQUIRED)
find_package(Qt5 COMPONENTS MultimediaWidgets REQUIRED)

add_executable(main main.cpp)

target_link_libraries(main PRIVATE Qt5::Widgets)
target_link_libraries(main PRIVATE Qt5::Multimedia)
target_link_libraries(main PRIVATE Qt5::MultimediaWidgets)

qmake build output

21:48:51: Running steps for project project...
21:48:51: Starting: "C:\Qt\5.15.2\msvc2019_64\bin\qmake.exe" C:\Users\user\2023\QtProjects\theproject\project.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=qml_debug"
Info: creating stash file C:\Users\user\2023\QtProjects\theproject\build\.qmake.stash
21:48:52: The process "C:\Qt\5.15.2\msvc2019_64\bin\qmake.exe" exited normally.
21:48:52: Starting: "C:\Qt\Tools\QtCreator\bin\jom\jom.exe" -f C:/Users/user/2023/QtProjects/theproject/build/Makefile qmake_all

jom 1.1.4 - empower your cores

21:48:52: The process "C:\Qt\Tools\QtCreator\bin\jom\jom.exe" exited normally.
21:48:52: Starting: "C:\Qt\Tools\QtCreator\bin\jom\jom.exe" 
    C:\Qt\Tools\QtCreator\bin\jom\jom.exe -f Makefile.Debug
    cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc /Fddebug\project.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_QML_DEBUG -DQT_MULTIMEDIAWIDGETS_LIB -DQT_WIDGETS_LIB -DQT_MULTIMEDIA_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I..\..\theproject -I. -IC:\Qt\5.15.2\msvc2019_64\include -IC:\Qt\5.15.2\msvc2019_64\include\QtMultimediaWidgets -IC:\Qt\5.15.2\msvc2019_64\include\QtWidgets -IC:\Qt\5.15.2\msvc2019_64\include\QtMultimedia -IC:\Qt\5.15.2\msvc2019_64\include\QtGui -IC:\Qt\5.15.2\msvc2019_64\include\QtANGLE -IC:\Qt\5.15.2\msvc2019_64\include\QtNetwork -IC:\Qt\5.15.2\msvc2019_64\include\QtCore -Idebug -I/include -IC:\Qt\5.15.2\msvc2019_64\mkspecs\win32-msvc -Fodebug\ @C:\Users\user\AppData\Local\Temp\main.obj.5844.16.jom
main.cpp
    link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:debug\project.exe @C:\Users\user\AppData\Local\Temp\project.exe.5844.1500.jom
21:48:54: The process "C:\Qt\Tools\QtCreator\bin\jom\jom.exe" exited normally.
21:48:54: Elapsed time: 00:03.

cmake output

Running C:\Qt\Tools\CMake_64\bin\cmake.exe -S C:/Users/user/2023/QtProjects/theproject -B C:/Users/user/2023/QtProjects/theproject/build "-DCMAKE_GENERATOR:STRING=Ninja" "-DCMAKE_BUILD_TYPE:STRING=Debug" "-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=C:\Users\user\2023\QtProjects\theproject\build/.qtc/package-manager/auto-setup.cmake" "-DQT_QMAKE_EXECUTABLE:FILEPATH=C:/Qt/5.15.2/msvc2019_64/bin/qmake.exe" "-DCMAKE_PREFIX_PATH:PATH=C:/Qt/5.15.2/msvc2019_64" "-DCMAKE_C_COMPILER:FILEPATH=C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.39.33519/bin/HostX64/x64/cl.exe" "-DCMAKE_CXX_COMPILER:FILEPATH=C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.39.33519/bin/HostX64/x64/cl.exe" "-DCMAKE_CXX_FLAGS_INIT:STRING=-DQT_QML_DEBUG" in C:\Users\user\2023\QtProjects\theproject\build.
[cmake] -- The C compiler identification is MSVC 19.39.33521.0
[cmake] -- The CXX compiler identification is MSVC 19.39.33521.0
[cmake] -- Detecting C compiler ABI info
[cmake] -- Detecting C compiler ABI info - done
[cmake] -- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.39.33519/bin/HostX64/x64/cl.exe - skipped
[cmake] -- Detecting C compile features
[cmake] -- Detecting C compile features - done
[cmake] -- Detecting CXX compiler ABI info
[cmake] -- Detecting CXX compiler ABI info - done
[cmake] -- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.39.33519/bin/HostX64/x64/cl.exe - skipped
[cmake] -- Detecting CXX compile features
[cmake] -- Detecting CXX compile features - done
[cmake] -- Configuring done (2.6s)
[cmake] -- Generating done (0.0s)
[cmake] -- Build files have been written to: C:/Users/user/2023/QtProjects/theproject/build
[cmake] 
[cmake] Elapsed time: 00:03.

cmake build output

21:36:06: Starting: "C:\Qt\Tools\CMake_64\bin\cmake.exe" --build C:/Users/user/2023/QtProjects/theproject/build --target all
[1/4 7.2/sec] Automatic MOC and UIC for target main
[2/4 10.4/sec] Building CXX object CMakeFiles\main.dir\main_autogen\mocs_compilation.cpp.obj
[3/4 2.1/sec] Building CXX object CMakeFiles\main.dir\main.cpp.obj
[4/4 2.2/sec] Linking CXX executable main.exe
21:36:08: The process "C:\Qt\Tools\CMake_64\bin\cmake.exe" exited normally.
21:36:

Modified cmakelists to include

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON" FORCE)
set(CMAKE_CXX_FLAGS "-Wall -EHsc")

and got move verbose compile ouput

22:17:00: Starting: "C:\Qt\Tools\CMake_64\bin\cmake.exe" --build C:/Users/user/2023/QtProjects/theproject/build --target all
Change Dir: 'C:/Users/user/2023/QtProjects/theproject/build'

Run Build Command(s): C:/PROGRA~1/MICROS~1/2022/COMMUN~1/Common7/IDE/COMMON~1/MICROS~1/CMake/Ninja/ninja.exe -v all
[1/4 7.2/sec] cmd.exe /C "cd /D C:\Users\user\2023\QtProjects\theproject\build && C:\Qt\Tools\CMake_64\bin\cmake.exe -E cmake_autogen C:/Users/user/2023/QtProjects/theproject/build/CMakeFiles/main_autogen.dir/AutogenInfo.json Debug && C:\Qt\Tools\CMake_64\bin\cmake.exe -E touch C:/Users/user/2023/QtProjects/theproject/build/main_autogen/timestamp && C:\Qt\Tools\CMake_64\bin\cmake.exe -E cmake_transform_depfile Ninja gccdepfile C:/Users/user/2023/QtProjects/theproject C:/Users/user/2023/QtProjects/theproject C:/Users/user/2023/QtProjects/theproject/build C:/Users/user/2023/QtProjects/theproject/build C:/Users/user/2023/QtProjects/theproject/build/main_autogen/deps C:/Users/user/2023/QtProjects/theproject/build/CMakeFiles/d/6c724d07ae6732e642ef2cdc5a50060f03430c94a905f7600a3317c1be0a1b08.d"
[2/4 10.3/sec] C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1439~1.335\bin\HostX64\x64\cl.exe  /nologo /TP -DQT_CORE_LIB -DQT_GUI_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_MULTIMEDIA_LIB -DQT_NETWORK_LIB -DQT_WIDGETS_LIB -IC:\Users\user\2023\QtProjects\theproject\build\main_autogen\include -external:IC:\Qt\5.15.2\msvc2019_64\include -external:IC:\Qt\5.15.2\msvc2019_64\include\QtWidgets -external:IC:\Qt\5.15.2\msvc2019_64\include\QtGui -external:IC:\Qt\5.15.2\msvc2019_64\include\QtANGLE -external:IC:\Qt\5.15.2\msvc2019_64\include\QtCore -external:IC:\Qt\5.15.2\msvc2019_64\.\mkspecs\win32-msvc -external:IC:\Qt\5.15.2\msvc2019_64\include\QtMultimedia -external:IC:\Qt\5.15.2\msvc2019_64\include\QtNetwork -external:IC:\Qt\5.15.2\msvc2019_64\include\QtMultimediaWidgets -external:W0 -Wall -EHsc /Zi /Ob0 /Od /RTC1 -MDd /showIncludes /FoCMakeFiles\main.dir\main_autogen\mocs_compilation.cpp.obj /FdCMakeFiles\main.dir\ /FS -c C:\Users\user\2023\QtProjects\theproject\build\main_autogen\mocs_compilation.cpp
[3/4 2.1/sec] C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1439~1.335\bin\HostX64\x64\cl.exe  /nologo /TP -DQT_CORE_LIB -DQT_GUI_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_MULTIMEDIA_LIB -DQT_NETWORK_LIB -DQT_WIDGETS_LIB -IC:\Users\user\2023\QtProjects\theproject\build\main_autogen\include -external:IC:\Qt\5.15.2\msvc2019_64\include -external:IC:\Qt\5.15.2\msvc2019_64\include\QtWidgets -external:IC:\Qt\5.15.2\msvc2019_64\include\QtGui -external:IC:\Qt\5.15.2\msvc2019_64\include\QtANGLE -external:IC:\Qt\5.15.2\msvc2019_64\include\QtCore -external:IC:\Qt\5.15.2\msvc2019_64\.\mkspecs\win32-msvc -external:IC:\Qt\5.15.2\msvc2019_64\include\QtMultimedia -external:IC:\Qt\5.15.2\msvc2019_64\include\QtNetwork -external:IC:\Qt\5.15.2\msvc2019_64\include\QtMultimediaWidgets -external:W0 -Wall -EHsc /Zi /Ob0 /Od /RTC1 -MDd /showIncludes /FoCMakeFiles\main.dir\main.cpp.obj /FdCMakeFiles\main.dir\ /FS -c C:\Users\user\2023\QtProjects\theproject\main.cpp
[4/4 2.2/sec] cmd.exe /C "cd . && C:\Qt\Tools\CMake_64\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\main.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\mt.exe --manifests  -- C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1439~1.335\bin\Hostx64\x64\link.exe /nologo CMakeFiles\main.dir\main_autogen\mocs_compilation.cpp.obj CMakeFiles\main.dir\main.cpp.obj  /out:main.exe /implib:main.lib /pdb:main.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console  C:\Qt\5.15.2\msvc2019_64\lib\Qt5MultimediaWidgetsd.lib  C:\Qt\5.15.2\msvc2019_64\lib\Qt5Widgetsd.lib  C:\Qt\5.15.2\msvc2019_64\lib\Qt5Multimediad.lib  C:\Qt\5.15.2\msvc2019_64\lib\Qt5Networkd.lib  C:\Qt\5.15.2\msvc2019_64\lib\Qt5Guid.lib  C:\Qt\5.15.2\msvc2019_64\lib\Qt5Cored.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."

22:17:02: The process "C:\Qt\Tools\CMake_64\bin\cmake.exe" exited normally.

Not sure if this should led to any difference but, changing the generator from ninja to jom led to following compile output

22:37:09: Starting: "C:\Qt\Tools\CMake_64\bin\cmake.exe" --build C:/Users/user/2023/QtProjects/theproject/build --target all
Change Dir: 'C:/Users/user/2023/QtProjects/theproject/build'

Run Build Command(s): C:/Qt/Tools/CMake_64/bin/cmake.exe -E env VERBOSE=1 jom -f Makefile /nologo all
jom: parallel job execution disabled for Makefile
    C:\Qt\Tools\CMake_64\bin\cmake.exe -SC:\Users\user\2023\QtProjects\theproject -BC:\Users\user\2023\QtProjects\theproject\build --check-build-system CMakeFiles\Makefile.cmake 0
    C:\Qt\Tools\CMake_64\bin\cmake.exe -E cmake_progress_start C:\Users\user\2023\QtProjects\theproject\build\CMakeFiles C:\Users\user\2023\QtProjects\theproject\build\\CMakeFiles\progress.marks
    C:\Qt\Tools\QtCreator\bin\jom\jom.exe  -f CMakeFiles\Makefile2 /nologo -L all
    C:\Qt\Tools\QtCreator\bin\jom\jom.exe  -f CMakeFiles\main_autogen.dir\build.make /nologo -L CMakeFiles\main_autogen.dir\depend
    C:\Qt\Tools\CMake_64\bin\cmake.exe -E cmake_depends "NMake Makefiles JOM" C:\Users\user\2023\QtProjects\theproject C:\Users\user\2023\QtProjects\theproject C:\Users\user\2023\QtProjects\theproject\build C:\Users\user\2023\QtProjects\theproject\build C:\Users\user\2023\QtProjects\theproject\build\CMakeFiles\main_autogen.dir\DependInfo.cmake "--color="
    C:\Qt\Tools\QtCreator\bin\jom\jom.exe  -f CMakeFiles\main_autogen.dir\build.make /nologo -L CMakeFiles\main_autogen.dir\build
[ 25%] Automatic MOC and UIC for target main
    C:\Qt\Tools\CMake_64\bin\cmake.exe -E cmake_autogen C:/Users/user/2023/QtProjects/theproject/build/CMakeFiles/main_autogen.dir/AutogenInfo.json Debug
AutoGen: Refreshing parse cache because it doesn't exist.
AutoGen: Parsing "SRC:/main.cpp"
AutoMoc: Generating MOC compilation "SRC:/build/main_autogen/mocs_compilation.cpp"
AutoGen: Writing the parse cache file "SRC:/build/CMakeFiles/main_autogen.dir/ParseCache.txt"
AutoGen: Writing the settings file "SRC:/build/CMakeFiles/main_autogen.dir/AutogenUsed.txt"
[ 25%] Built target main_autogen
    C:\Qt\Tools\QtCreator\bin\jom\jom.exe  -f CMakeFiles\main.dir\build.make /nologo -L CMakeFiles\main.dir\depend
    C:\Qt\Tools\CMake_64\bin\cmake.exe -E cmake_depends "NMake Makefiles JOM" C:\Users\user\2023\QtProjects\theproject C:\Users\user\2023\QtProjects\theproject C:\Users\user\2023\QtProjects\theproject\build C:\Users\user\2023\QtProjects\theproject\build C:\Users\user\2023\QtProjects\theproject\build\CMakeFiles\main.dir\DependInfo.cmake "--color="
    C:\Qt\Tools\QtCreator\bin\jom\jom.exe  -f CMakeFiles\main.dir\build.make /nologo -L CMakeFiles\main.dir\build
[ 50%] Building CXX object CMakeFiles/main.dir/main_autogen/mocs_compilation.cpp.obj
    C:\Qt\Tools\CMake_64\bin\cmake.exe -E cmake_cl_compile_depends --dep-file=CMakeFiles\main.dir\main_autogen\mocs_compilation.cpp.obj.d --working-dir=C:\Users\user\2023\QtProjects\theproject\build --filter-prefix="Note: including file: " -- C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1439~1.335\bin\HostX64\x64\cl.exe @C:\Users\user\AppData\Local\Temp\mocs_compilation.cpp.obj.4672.15.jom
[ 75%] Building CXX object CMakeFiles/main.dir/main.cpp.obj
mocs_compilation.cpp
    C:\Qt\Tools\CMake_64\bin\cmake.exe -E cmake_cl_compile_depends --dep-file=CMakeFiles\main.dir\main.cpp.obj.d --working-dir=C:\Users\user\2023\QtProjects\theproject\build --filter-prefix="Note: including file: " -- C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1439~1.335\bin\HostX64\x64\cl.exe @C:\Users\user\AppData\Local\Temp\main.cpp.obj.4672.15.jom
main.cpp
[100%] Linking CXX executable main.exe
    C:\Qt\Tools\CMake_64\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\main.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\mt.exe --manifests -- C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1439~1.335\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\main.dir\objects1.rsp @C:\Users\user\AppData\Local\Temp\main.exe.4672.1422.jom
Visual Studio Incremental Link with embedded manifests
Create CMakeFiles\main.dir/manifest.rc
Create empty: CMakeFiles\main.dir/embed.manifest
RC Pass 1:
C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe /fo CMakeFiles\main.dir/manifest.res CMakeFiles\main.dir/manifest.rc
LINK Pass 1:
C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1439~1.335\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\main.dir\objects1.rsp /out:main.exe /implib:main.lib /pdb:C:\Users\user\2023\QtProjects\theproject\build\main.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console C:\Qt\5.15.2\msvc2019_64\lib\Qt5MultimediaWidgetsd.lib C:\Qt\5.15.2\msvc2019_64\lib\Qt5Widgetsd.lib C:\Qt\5.15.2\msvc2019_64\lib\Qt5Multimediad.lib C:\Qt\5.15.2\msvc2019_64\lib\Qt5Networkd.lib C:\Qt\5.15.2\msvc2019_64\lib\Qt5Guid.lib C:\Qt\5.15.2\msvc2019_64\lib\Qt5Cored.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\main.dir/intermediate.manifest CMakeFiles\main.dir/manifest.res
MT:
C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\mt.exe /nologo /manifest CMakeFiles\main.dir/intermediate.manifest /out:CMakeFiles\main.dir/embed.manifest /notify_update
RC Pass 2:
C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe /fo CMakeFiles\main.dir/manifest.res CMakeFiles\main.dir/manifest.rc
FINAL LINK:
C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1439~1.335\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\main.dir\objects1.rsp /out:main.exe /implib:main.lib /pdb:C:\Users\user\2023\QtProjects\theproject\build\main.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console C:\Qt\5.15.2\msvc2019_64\lib\Qt5MultimediaWidgetsd.lib C:\Qt\5.15.2\msvc2019_64\lib\Qt5Widgetsd.lib C:\Qt\5.15.2\msvc2019_64\lib\Qt5Multimediad.lib C:\Qt\5.15.2\msvc2019_64\lib\Qt5Networkd.lib C:\Qt\5.15.2\msvc2019_64\lib\Qt5Guid.lib C:\Qt\5.15.2\msvc2019_64\lib\Qt5Cored.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\main.dir/intermediate.manifest CMakeFiles\main.dir/manifest.res
[100%] Built target main
    C:\Qt\Tools\CMake_64\bin\cmake.exe -E cmake_progress_start C:\Users\user\2023\QtProjects\theproject\build\CMakeFiles 0

22:37:12: The process "C:\Qt\Tools\CMake_64\bin\cmake.exe" exited normally.

Debugging reveals a bit more. Not sure what that means.

enter image description here

0

There are 0 best solutions below