CMake deploy api and QtMultimedia backend
-
Hello everyone,
I am using the cmake-deployment-api to deploy my Qt application
The application works ok when using the deploys created by the API. The only problem is that it return
could not load multimedia backend "" QtMultimedia is not currently supported on this platform or compiler. Failed to initialize QMediaCaptureSession "Not available" Failed to create QVideoSink "Not available"
when trying to use Qtmultimedia things. So the video and camera stuff do not work.
The app when built in my system works ok.
The app is compiled using Qt 6.6.0.Any idea how to solve this?
Many thanks for your time.
-
Hi,
Did you check that you have the corresponding plugins deployed along your application ?
-
@SGaist Hi,
What is the name of the plugins? Any reference? The folder structure of the project release is :├── bin │ ├── nftminter │ └── qt.conf ├── include │ ├── account │ │ └── account.hpp │ ├── block │ │ ├── carray.hpp │ │ ├── qaddresses.hpp │ │ ├── qblock.hpp │ │ ├── qessences.hpp │ │ ├── qfeatures.hpp │ │ ├── qinputs.hpp │ │ ├── qnative_tokens.hpp │ │ ├── qoutput_metadata_response.hpp │ │ ├── qoutputs.hpp │ │ ├── qpayloads.hpp │ │ ├── qsignatures.hpp │ │ ├── qtoken_scheme.hpp │ │ ├── qunlock_conditions.hpp │ │ └── qunlocks.hpp │ ├── client │ │ ├── qclient.hpp │ │ ├── qclientMQTT.hpp │ │ ├── qnode_block.hpp │ │ ├── qnode_blockId.hpp │ │ ├── qnode_info.hpp │ │ ├── qnode_outputs.hpp │ │ ├── qnode_response.hpp │ │ ├── qnode_tips.hpp │ │ └── qwebsocketiodevice.hpp │ ├── crypto │ │ ├── qed25519.hpp │ │ └── qslip10.hpp │ ├── encoding │ │ ├── qb1t6.hpp │ │ └── qbech32.hpp │ ├── hashing │ │ └── qcurlp81.hpp │ ├── midlePay │ │ └── midlePay.hpp │ ├── MyDesigns │ │ └── mydesigns.hpp │ ├── nodeConection │ │ └── nodeConnection.hpp │ ├── outMonitor │ │ └── outmonitor.hpp │ ├── qaddr_bundle │ │ └── qaddr_bundle.hpp │ ├── qbigint │ │ ├── arith_uint256.h │ │ └── qbigint.hpp │ ├── qpow │ │ └── pow │ │ └── qpow.hpp │ ├── qrCode │ │ ├── qrcodedec.hpp │ │ ├── qrcodegen.hpp │ │ ├── Qrimagedecoder.hpp │ │ └── Qrimageprovider.hpp │ └── QtMqtt │ ├── 6.5.0 │ │ └── QtMqtt │ │ └── private │ │ ├── qmqttclient_p.h │ │ ├── qmqttconnection_p.h │ │ ├── qmqttconnectionproperties_p.h │ │ ├── qmqttcontrolpacket_p.h │ │ ├── qmqttmessage_p.h │ │ ├── qmqttpublishproperties_p.h │ │ └── qmqttsubscription_p.h │ ├── QMqttAuthenticationProperties │ ├── qmqttauthenticationproperties.h │ ├── QMqttClient │ ├── qmqttclient.h │ ├── QMqttConnectionProperties │ ├── qmqttconnectionproperties.h │ ├── qmqttglobal.h │ ├── QMqttLastWillProperties │ ├── QMqttMessage │ ├── qmqttmessage.h │ ├── QMqttMessageStatusProperties │ ├── QMqttPublishProperties │ ├── qmqttpublishproperties.h │ ├── QMqttServerConnectionProperties │ ├── QMqttStringPair │ ├── QMqttSubscription │ ├── qmqttsubscription.h │ ├── QMqttSubscriptionProperties │ ├── qmqttsubscriptionproperties.h │ ├── QMqttTopicFilter │ ├── qmqtttopicfilter.h │ ├── QMqttTopicName │ ├── qmqtttopicname.h │ ├── qmqtttype.h │ ├── QMqttUnsubscriptionProperties │ ├── QMqttUserProperties │ ├── QtMqtt │ ├── QtMqttDepends │ ├── qtmqttexports.h │ ├── QtMqttVersion │ └── qtmqttversion.h ├── lib │ ├── cmake │ │ ├── account │ │ │ ├── accountConfig.cmake │ │ │ ├── accountConfigVersion.cmake │ │ │ ├── accountTargets.cmake │ │ │ └── accountTargets-release.cmake │ │ ├── midlePay │ │ │ ├── midlePayConfig.cmake │ │ │ ├── midlePayConfigVersion.cmake │ │ │ ├── midlePayTargets.cmake │ │ │ └── midlePayTargets-release.cmake │ │ ├── MyDesigns │ │ │ ├── MyDesignsConfig.cmake │ │ │ ├── MyDesignsConfigVersion.cmake │ │ │ ├── MyDesignsTargets.cmake │ │ │ └── MyDesignsTargets-release.cmake │ │ ├── nodeConection │ │ │ ├── nodeConectionConfig.cmake │ │ │ ├── nodeConectionConfigVersion.cmake │ │ │ ├── nodeConectionTargets.cmake │ │ │ └── nodeConectionTargets-release.cmake │ │ ├── outMonitor │ │ │ ├── outMonitorConfig.cmake │ │ │ ├── outMonitorConfigVersion.cmake │ │ │ ├── outMonitorTargets.cmake │ │ │ └── outMonitorTargets-release.cmake │ │ ├── qaddr_bundle │ │ │ ├── qaddr_bundleConfig.cmake │ │ │ ├── qaddr_bundleConfigVersion.cmake │ │ │ ├── qaddr_bundleTargets.cmake │ │ │ └── qaddr_bundleTargets-release.cmake │ │ ├── qb1t6 │ │ │ ├── qb1t6Config.cmake │ │ │ ├── qb1t6ConfigVersion.cmake │ │ │ ├── qb1t6Targets.cmake │ │ │ └── qb1t6Targets-release.cmake │ │ ├── qbech32 │ │ │ ├── qbech32Config.cmake │ │ │ ├── qbech32ConfigVersion.cmake │ │ │ ├── qbech32Targets.cmake │ │ │ └── qbech32Targets-release.cmake │ │ ├── qbigint │ │ │ ├── qbigintConfig.cmake │ │ │ ├── qbigintConfigVersion.cmake │ │ │ ├── qbigintTargets.cmake │ │ │ └── qbigintTargets-release.cmake │ │ ├── qblock │ │ │ ├── qblockConfig.cmake │ │ │ ├── qblockConfigVersion.cmake │ │ │ ├── qblockTargets.cmake │ │ │ └── qblockTargets-release.cmake │ │ ├── qclient │ │ │ ├── qclientConfig.cmake │ │ │ ├── qclientConfigVersion.cmake │ │ │ ├── qclientTargets.cmake │ │ │ └── qclientTargets-release.cmake │ │ ├── qclientMQTT │ │ │ ├── qclientMQTTConfig.cmake │ │ │ ├── qclientMQTTConfigVersion.cmake │ │ │ ├── qclientMQTTTargets.cmake │ │ │ └── qclientMQTTTargets-release.cmake │ │ ├── qcurlp81 │ │ │ ├── qcurlp81Config.cmake │ │ │ ├── qcurlp81ConfigVersion.cmake │ │ │ ├── qcurlp81Targets.cmake │ │ │ └── qcurlp81Targets-release.cmake │ │ ├── qed25519 │ │ │ ├── qed25519Config.cmake │ │ │ ├── qed25519ConfigVersion.cmake │ │ │ ├── qed25519Targets.cmake │ │ │ └── qed25519Targets-release.cmake │ │ ├── qpow │ │ │ ├── qpowConfig.cmake │ │ │ ├── qpowConfigVersion.cmake │ │ │ ├── qpowTargets.cmake │ │ │ └── qpowTargets-release.cmake │ │ ├── qrCode │ │ │ ├── qrCodeConfig.cmake │ │ │ ├── qrCodeConfigVersion.cmake │ │ │ ├── qrCodeTargets.cmake │ │ │ └── qrCodeTargets-release.cmake │ │ ├── qslip10 │ │ │ ├── qslip10Config.cmake │ │ │ ├── qslip10ConfigVersion.cmake │ │ │ ├── qslip10Targets.cmake │ │ │ └── qslip10Targets-release.cmake │ │ ├── Qt6BuildInternals │ │ │ └── StandaloneTests │ │ │ └── QtMqttTestsConfig.cmake │ │ └── Qt6Mqtt │ │ ├── Qt6MqttAdditionalTargetInfo.cmake │ │ ├── Qt6MqttConfig.cmake │ │ ├── Qt6MqttConfigVersion.cmake │ │ ├── Qt6MqttConfigVersionImpl.cmake │ │ ├── Qt6MqttDependencies.cmake │ │ ├── Qt6MqttTargets.cmake │ │ ├── Qt6MqttTargets-release.cmake │ │ └── Qt6MqttVersionlessTargets.cmake │ ├── libaccount.so │ ├── libicudata.so.56 -> libicudata.so.56.1 │ ├── libicudata.so.56.1 │ ├── libicui18n.so.56 -> libicui18n.so.56.1 │ ├── libicui18n.so.56.1 │ ├── libicuuc.so.56 -> libicuuc.so.56.1 │ ├── libicuuc.so.56.1 │ ├── libmidlePay.so │ ├── libMyDesigns.so │ ├── libnodeConection.so │ ├── libopencv_core.so.408 -> libopencv_core.so.4.8.0 │ ├── libopencv_core.so.4.8.0 │ ├── libopencv_objdetect.so.408 -> libopencv_objdetect.so.4.8.0 │ ├── libopencv_objdetect.so.4.8.0 │ ├── liboutMonitor.so │ ├── libqaddr_bundle.so │ ├── libqb1t6.so │ ├── libqbech32.so │ ├── libqbigint.so │ ├── libqblock.so │ ├── libqclientMQTT.so │ ├── libqclient.so │ ├── libqcurlp81.so │ ├── libqed25519.so │ ├── libqpow.so │ ├── libQrDec.so │ ├── libQrGen.so │ ├── libqslip10.so │ ├── libQt6Core.so.6 -> libQt6Core.so.6.6.0 │ ├── libQt6Core.so.6.6.0 │ ├── libQt6DBus.so.6 -> libQt6DBus.so.6.6.0 │ ├── libQt6DBus.so.6.6.0 │ ├── libQt6EglFSDeviceIntegration.so.6 -> libQt6EglFSDeviceIntegration.so.6.6.0 │ ├── libQt6EglFSDeviceIntegration.so.6.6.0 │ ├── libQt6EglFsKmsSupport.so.6 -> libQt6EglFsKmsSupport.so.6.6.0 │ ├── libQt6EglFsKmsSupport.so.6.6.0 │ ├── libQt6Gui.so.6 -> libQt6Gui.so.6.6.0 │ ├── libQt6Gui.so.6.6.0 │ ├── libQt6Mqtt.prl │ ├── libQt6Mqtt.so -> libQt6Mqtt.so.6 │ ├── libQt6Mqtt.so.6 -> libQt6Mqtt.so.6.5.0 │ ├── libQt6Mqtt.so.6.5.0 │ ├── libQt6Multimedia.so.6 -> libQt6Multimedia.so.6.6.0 │ ├── libQt6Multimedia.so.6.6.0 │ ├── libQt6Network.so.6 -> libQt6Network.so.6.6.0 │ ├── libQt6Network.so.6.6.0 │ ├── libQt6OpenGL.so.6 -> libQt6OpenGL.so.6.6.0 │ ├── libQt6OpenGL.so.6.6.0 │ ├── libQt6QmlModels.so.6 -> libQt6QmlModels.so.6.6.0 │ ├── libQt6QmlModels.so.6.6.0 │ ├── libQt6Qml.so.6 -> libQt6Qml.so.6.6.0 │ ├── libQt6Qml.so.6.6.0 │ ├── libQt6QmlWorkerScript.so.6 -> libQt6QmlWorkerScript.so.6.6.0 │ ├── libQt6QmlWorkerScript.so.6.6.0 │ ├── libQt6QuickControls2Impl.so.6 -> libQt6QuickControls2Impl.so.6.6.0 │ ├── libQt6QuickControls2Impl.so.6.6.0 │ ├── libQt6QuickControls2.so.6 -> libQt6QuickControls2.so.6.6.0 │ ├── libQt6QuickControls2.so.6.6.0 │ ├── libQt6QuickLayouts.so.6 -> libQt6QuickLayouts.so.6.6.0 │ ├── libQt6QuickLayouts.so.6.6.0 │ ├── libQt6QuickShapes.so.6 -> libQt6QuickShapes.so.6.6.0 │ ├── libQt6QuickShapes.so.6.6.0 │ ├── libQt6Quick.so.6 -> libQt6Quick.so.6.6.0 │ ├── libQt6Quick.so.6.6.0 │ ├── libQt6QuickTemplates2.so.6 -> libQt6QuickTemplates2.so.6.6.0 │ ├── libQt6QuickTemplates2.so.6.6.0 │ ├── libQt6Svg.so.6 -> libQt6Svg.so.6.6.0 │ ├── libQt6Svg.so.6.6.0 │ ├── libQt6WebSockets.so.6 -> libQt6WebSockets.so.6.6.0 │ ├── libQt6WebSockets.so.6.6.0 │ ├── libQt6XcbQpa.so.6 -> libQt6XcbQpa.so.6.6.0 │ ├── libQt6XcbQpa.so.6.6.0 │ ├── libQtQrDec.so │ ├── libQtQrGen.so │ ├── pkgconfig │ │ └── Qt6Mqtt.pc │ └── Qt6Mqtt.debug ├── metatypes │ └── qt6mqtt_release_metatypes.json ├── mkspecs │ └── modules │ ├── qt_lib_mqtt.pri │ └── qt_lib_mqtt_private.pri ├── modules │ └── Mqtt.json ├── plugins │ ├── egldeviceintegrations │ │ ├── libqeglfs-emu-integration.so │ │ ├── libqeglfs-kms-egldevice-integration.so │ │ └── libqeglfs-x11-integration.so │ ├── iconengines │ │ └── libqsvgicon.so │ ├── imageformats │ │ ├── libqgif.so │ │ ├── libqico.so │ │ ├── libqjpeg.so │ │ └── libqsvg.so │ ├── networkinformation │ │ ├── libqglib.so │ │ └── libqnetworkmanager.so │ ├── platforms │ │ └── libqxcb.so │ ├── qmltooling │ │ ├── libqmldbg_debugger.so │ │ ├── libqmldbg_inspector.so │ │ ├── libqmldbg_local.so │ │ ├── libqmldbg_messages.so │ │ ├── libqmldbg_nativedebugger.so │ │ ├── libqmldbg_native.so │ │ ├── libqmldbg_preview.so │ │ ├── libqmldbg_profiler.so │ │ ├── libqmldbg_quickprofiler.so │ │ ├── libqmldbg_server.so │ │ └── libqmldbg_tcp.so │ ├── tls │ │ └── libqopensslbackend.so │ └── xcbglintegrations │ ├── libqxcb-egl-integration.so │ └── libqxcb-glx-integration.so ├── qml │ ├── account │ │ ├── libaccountplugin.so │ │ └── qmldir │ ├── midlePay │ │ ├── libmidlePayplugin.so │ │ └── qmldir │ ├── MyDesigns │ │ ├── libMyDesignsplugin.so │ │ └── qmldir │ ├── nodeConection │ │ ├── libnodeConectionplugin.so │ │ └── qmldir │ ├── QtQml │ │ ├── Base │ │ │ ├── libqmlplugin.so │ │ │ └── qmldir │ │ ├── libqmlmetaplugin.so │ │ ├── Models │ │ │ ├── libmodelsplugin.so │ │ │ └── qmldir │ │ ├── qmldir │ │ └── WorkerScript │ │ ├── libworkerscriptplugin.so │ │ └── qmldir │ ├── QtQrDec │ │ ├── libQtQrDecplugin.so │ │ └── qmldir │ ├── QtQrGen │ │ ├── libQtQrGenplugin.so │ │ └── qmldir │ └── QtQuick │ ├── Controls │ │ ├── Basic │ │ │ ├── impl │ │ │ │ ├── libqtquickcontrols2basicstyleimplplugin.so │ │ │ │ └── qmldir │ │ │ ├── libqtquickcontrols2basicstyleplugin.so │ │ │ └── qmldir │ │ ├── Fusion │ │ │ ├── impl │ │ │ │ ├── libqtquickcontrols2fusionstyleimplplugin.so │ │ │ │ └── qmldir │ │ │ ├── libqtquickcontrols2fusionstyleplugin.so │ │ │ └── qmldir │ │ ├── Imagine │ │ │ ├── impl │ │ │ │ ├── libqtquickcontrols2imaginestyleimplplugin.so │ │ │ │ └── qmldir │ │ │ ├── libqtquickcontrols2imaginestyleplugin.so │ │ │ └── qmldir │ │ ├── impl │ │ │ ├── libqtquickcontrols2implplugin.so │ │ │ └── qmldir │ │ ├── libqtquickcontrols2plugin.so │ │ ├── Material │ │ │ ├── impl │ │ │ │ ├── libqtquickcontrols2materialstyleimplplugin.so │ │ │ │ └── qmldir │ │ │ ├── libqtquickcontrols2materialstyleplugin.so │ │ │ └── qmldir │ │ ├── qmldir │ │ └── Universal │ │ ├── impl │ │ │ ├── libqtquickcontrols2universalstyleimplplugin.so │ │ │ └── qmldir │ │ ├── libqtquickcontrols2universalstyleplugin.so │ │ └── qmldir │ ├── Layouts │ │ ├── libqquicklayoutsplugin.so │ │ └── qmldir │ ├── libqtquick2plugin.so │ ├── qmldir │ ├── Shapes │ │ ├── libqmlshapesplugin.so │ │ └── qmldir │ ├── Templates │ │ ├── libqtquicktemplates2plugin.so │ │ └── qmldir │ └── Window │ ├── libquickwindowplugin.so │ └── qmldir └── translations ├── qt_ar.qm ├── qt_bg.qm ├── qt_ca.qm ├── qt_cs.qm ├── qt_da.qm ├── qt_de.qm ├── qt_en.qm ├── qt_es.qm ├── qt_fa.qm ├── qt_fi.qm ├── qt_fr.qm ├── qt_gd.qm ├── qt_gl.qm ├── qt_he.qm ├── qt_hr.qm ├── qt_hu.qm ├── qt_it.qm ├── qt_ja.qm ├── qt_ko.qm ├── qt_lt.qm ├── qt_lv.qm ├── qt_nl.qm ├── qt_nn.qm ├── qt_pl.qm ├── qt_pt_BR.qm ├── qt_pt_PT.qm ├── qt_ru.qm ├── qt_sk.qm ├── qt_sl.qm ├── qt_sv.qm ├── qt_tr.qm ├── qt_uk.qm ├── qt_zh_CN.qm └── qt_zh_TW.qm
I see that in my build machine(where QtMultimedia works) there is the folder
Qt/6.7.0/gcc_64/plugins/multimedia
with contentlibffmpegmediaplugin.so libgstreamermediaplugin.so
but this is not installed by linuxdeploy(this happens also using Qt6.7.0).
Macosdeploy(I do not remember the name) install
libdarwinmediaplugin.dylib
andlibffmpegmediaplugin.dylib
underNFTMinter-v0.3.1-Darwin_21.6.0-x86_64-AppleClang-MThread/nftminter.app/Contents/PlugIns/multimedia/
Windowsdeploy does not install multimedia plugins.
I am using the CMake API of Qt deploy. Is this a bug? -
Does anyone know how to deploy QtMultimedia and the backends in Windows using windeployqt tool?
If you know how to do it using the CMake deployment API of Qt better.
Because for me it is not working.Any help will be much appreciated.
-
To deploy QtMultimedia in windows one has to pass
-multimedia
towindeployqt
.
From this, it saysSince Qt 6.7, you can use DEPLOY_TOOL_OPTIONS to pass additional options to the underlying deployment tool. This only has an effect if the underlying deployment tool is either macdeployqt or windeployqt.
This should deploy qtmultimedia and backends using the CMake API like
qt_generate_deploy_qml_app_script( TARGET ${example} OUTPUT_SCRIPT deploy_script DEPLOY_TOOL_OPTIONS -multimedia ) install(SCRIPT ${deploy_script} COMPONENT examples)
This will work for Windows but not for Macos. But one has to use some if the conditionals.