1、前言
在一次项目过程中,因项目需求,需要将windows开发的Qt项目迁移到ubuntu系统中,且在某个功能项中需要播放音频,在windows系统中能够正常运行,但在ubuntu系统中却显示defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer"错误,在网上查找资料后解决问题,在此进行记录。
2、问题原因
根据查找的多篇参考文章,考虑可能为QT的MultiMedia依赖于Gstreamer的,因此需要装好gstreamer的几个库,但是经过查找发现已经存在gstreamer相关库,之后打开调试开关:在~/.bashrc文件的最后添加export QT_DEBUG_PLUGINS=1,通过source ~/.bashrc命令生效后,在命令行运行Qt生成的可执行程序,发现在查找/usr/lib/aarch64-linux-gnu/qt5/plugins/mediaservice的库出错,经过排查,发现不存在该目录,最终确定问题原因为ubuntu系统中Qt安装时默认没有安装MultiMedia模块导致。
3、解决方法
通过命令行
sudo apt-get install libqt5multimedia5-plugins
安装MultiMedia模块后,重新打开Qt,成功解决问题
4、参考文章
解决QT no service found for – org.qt-project.qt.mediaplayer问题
Qt: defaultServiceProvider::requestService(): no service found for - “org.qt-project.qt.mediaplayer“
qt-no-service-found-for-org-qt-project-qt-mediaplayer