在崭新的 Ubuntu 中18.04,我正在尝试使用一个使用多媒体。
它在 17.10 中运行良好。现在,即使安装了很多包,我仍然无法让它工作。实例化 QMediaplayer 时出现以下错误:
defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer"
我认为这是一个错误,因为 Qt5 和 QtMultimedia 找不到正确注册的后端,对吗?
我已经安装了所有这些包:
gir1.2-gstreamer-1.0 1.14.0-1
gstreamer1.0-alsa:amd64 1.14.0-2ubuntu1
gstreamer1.0-clutter-3.0:amd64 3.0.26-1
gstreamer1.0-fluendo-mp3:amd64 0.10.32.debian-1
gstreamer1.0-gl:amd64 1.14.0-2ubuntu1
gstreamer1.0-libav:amd64 1.14.0-1
gstreamer1.0-packagekit 1.1.9-1ubuntu2
gstreamer1.0-plugins-bad:amd64 1.14.0-1ubuntu1
gstreamer1.0-plugins-base:amd64 1.14.0-2ubuntu1
gstreamer1.0-plugins-base-apps 1.14.0-2ubuntu1
gstreamer1.0-plugins-good:amd64 1.14.0-1ubuntu1
gstreamer1.0-plugins-ugly:amd64 1.14.0-1
gstreamer1.0-pulseaudio:amd64 1.14.0-1ubuntu1
gstreamer1.0-python3-plugin-loader 1.14.0-1
gstreamer1.0-qt5:amd64 1.14.0-1ubuntu1
gstreamer1.0-tools 1.14.0-1
gstreamer1.0-vaapi:amd64 1.14.0-1
gstreamer1.0-x:amd64 1.14.0-2ubuntu1
libgstreamer1.0-0:amd64 1.14.0-1
libgstreamer-gl1.0-0:amd64 1.14.0-2ubuntu1
libgstreamer-plugins-bad1.0-0:amd64 1.14.0-1ubuntu1
libgstreamer-plugins-base1.0-0:amd64 1.14.0-2ubuntu1
libgstreamer-plugins-good1.0-0:amd64 1.14.0-1ubuntu1
libqt5core5a:amd64 5.9.5+dfsg-0ubuntu1
libqt5dbus5:amd64 5.9.5+dfsg-0ubuntu1
libqt5designer5:amd64 5.9.5-0ubuntu1
libqt5glib-2.0-0:amd64 1.2.0-5
libqt5gstreamer-1.0-0:amd64 1.2.0-5
libqt5gui5:amd64 5.9.5+dfsg-0ubuntu1
libqt5help5:amd64 5.9.5-0ubuntu1
libqt5multimedia5:amd64 5.9.5-0ubuntu1
libqt5multimediawidgets5:amd64 5.9.5-0ubuntu1
libqt5network5:amd64 5.9.5+dfsg-0ubuntu1
libqt5opengl5:amd64 5.9.5+dfsg-0ubuntu1
libqt5printsupport5:amd64 5.9.5+dfsg-0ubuntu1
libqt5qml5:amd64 5.9.5-0ubuntu1
libqt5quick5:amd64 5.9.5-0ubuntu1
libqt5sql5:amd64 5.9.5+dfsg-0ubuntu1
libqt5sql5-sqlite:amd64 5.9.5+dfsg-0ubuntu1
libqt5svg5:amd64 5.9.5-0ubuntu1
libqt5test5:amd64 5.9.5+dfsg-0ubuntu1
libqt5widgets5:amd64 5.9.5+dfsg-0ubuntu1
libqt5x11extras5:amd64 5.9.5-0ubuntu1
libqt5xml5:amd64 5.9.5+dfsg-0ubuntu1
libreoffice-avmedia-backend-gstreamer 1:6.0.3-0ubuntu1
python3-pyqt5 5.10.1+dfsg-1ubuntu2
python3-pyqt5.qtmultimedia 5.10.1+dfsg-1ubuntu2
qt5-gtk-platformtheme:amd64 5.9.5+dfsg-0ubuntu1
qtgstreamer-plugins-qt5:amd64 1.2.0-5
当我将此列表与我在 17.10 上获得的列表进行比较时,我似乎没有遗漏任何内容。那么?
我使用 set 运行脚本QT_DEBUG_PLUGINS=1
,没有看到任何错误或问题。
答案1
只是解决了我的问题所以也许它也会对你有帮助。
复制粘贴如下:
问题是我为 Python3 安装了两个版本的PyQt5
和sip
。一个在/usr/lib/python3/dist-packages/
,另一个在~/.local/lib/python3.6/site-pacages/
。完全删除.local
版本有帮助。
答案2
对于任何偶然发现这个问题的人,这里是正确的设置,它将以非 root 身份构建 Qt 5.11.2,然后在 Ubuntu 18.04 上安装带有 GStreamer 1.0 支持的 pyqt 5.11.2虚拟环境使用python> = 3.6:
- 安装gstreamer1.0
- 安装脉冲(这是构建 QMultimediaWidgets 所必需的)
sudo apt install libpulse-dev
- 下载 Qt 5.11.2
- 使下载的文件可执行并运行它(
chmod +x qt-unified-linux-x64-3.0.5-online.run
)。单击完成向导。我假设您正在安装到$HOME/Qt
- 创建虚拟环境
python -m venv venv
。 - 下载 SIP 4.19.12并解压
- 下载 pyqt 5.11.2并解压
- 激活您的环境
source venv/bin/activate
- 安装 SIP:
- 进入 SIP 文件夹
- 告诉它使用你的虚拟环境
python configure.py -d ../venv/lib/python3.6/site-packages
make -j4
make install
- 为 Qt 构建一个私人副本:
python configure.py -d ../venv/lib/python3.6/site-packages --sip-module PyQt5.sip --no-tools
make -j4
make install
- 安装 PyQt:
- 进入 PyQt 文件夹
- 告诉它使用哪个 qmake、python 和 sip
python configure.py --destdir ../venv/lib/python3.6/site-packages --qmake ~/Qt/5.11.2/gcc_64/bin/qmake --sip ../venv/bin/sip
make -j12
make install
现在应该就是这样了。基于http://pyqt.sourceforge.net/Docs/PyQt5/installation.html,http://pyqt.sourceforge.net/Docs/sip4/installation.html
并经过多次尝试和错误。如果某些方法不起作用,我建议--verbose
在 PyQt 的配置步骤中使用。