QMediaPlayer不能在Ubuntu 16.04 / Qt 5.6上播放任何东西

我在Ubuntu 16.04上使用官方的Qt 5.6 SDK,当我尝试播放一个mp3文件时,我得到:

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

代码非常简单:

 mMediaPlayer->setMedia(QUrl::fromLocalFile(myMp3File)); mMediaPlayer->play(); 

这适用于Android,它在我的Ubuntu 14.04机器上工作过。 我错过了什么? 所有需要的gstreamer(通过文档)的东西似乎已经默认安装,但它仍然无法正常工作:

 $ dpkg -l | grep gstream ii gir1.2-gstreamer-1.0 1.8.2-1~ubuntu1 amd64 GObject introspection data for the GStreamer library ii gstreamer1.0-alsa:amd64 1.8.2-1ubuntu0.1 amd64 GStreamer plugin for ALSA ii gstreamer1.0-clutter-3.0 3.0.18-1 amd64 Clutter PLugin for GStreamer 1.0 ii gstreamer1.0-fluendo-mp3:amd64 0.10.32.debian-1 amd64 Fluendo mp3 decoder GStreamer 1.0 plugin ii gstreamer1.0-libav:amd64 1.8.2-1~ubuntu1 amd64 libav plugin for GStreamer ii gstreamer1.0-plugins-bad:amd64 1.8.2-1ubuntu0.1 amd64 GStreamer plugins from the "bad" set ii gstreamer1.0-plugins-bad-faad:amd64 1.8.2-1ubuntu0.1 amd64 GStreamer faad plugin from the "bad" set ii gstreamer1.0-plugins-bad-videoparsers:amd64 1.8.2-1ubuntu0.1 amd64 GStreamer videoparsers plugin from the "bad" set ii gstreamer1.0-plugins-base:amd64 1.8.2-1ubuntu0.1 amd64 GStreamer plugins from the "base" set ii gstreamer1.0-plugins-base-apps 1.8.2-1ubuntu0.1 amd64 GStreamer helper programs from the "base" set ii gstreamer1.0-plugins-good:amd64 1.8.2-1ubuntu0.1 amd64 GStreamer plugins from the "good" set ii gstreamer1.0-plugins-ugly:amd64 1.8.2-1ubuntu0.1 amd64 GStreamer plugins from the "ugly" set ii gstreamer1.0-plugins-ugly-amr:amd64 1.8.2-1ubuntu0.1 amd64 GStreamer plugins from the "ugly" set ii gstreamer1.0-pulseaudio:amd64 1.8.2-1ubuntu0.1 amd64 GStreamer plugin for PulseAudio ii gstreamer1.0-tools 1.8.2-1~ubuntu1 amd64 Tools for use with GStreamer ii gstreamer1.0-x:amd64 1.8.2-1ubuntu0.1 amd64 GStreamer plugins for X11 and Pango ii libgstreamer-plugins-bad1.0-0:amd64 1.8.2-1ubuntu0.1 amd64 GStreamer development files for libraries from the "bad" set ii libgstreamer-plugins-base1.0-0:amd64 1.8.2-1ubuntu0.1 amd64 GStreamer libraries from the "base" set ii libgstreamer-plugins-good1.0-0:amd64 1.8.2-1ubuntu0.1 amd64 GStreamer development files for libraries from the "good" set ii libgstreamer1.0-0:amd64 1.8.2-1~ubuntu1 amd64 Core GStreamer libraries and elements ii libreoffice-avmedia-backend-gstreamer 1:5.1.4-0ubuntu1 amd64 GStreamer backend for LibreOffice 

…当然,我的声音工作,否则完美。

首先,用QT_DEBUG_PLUGINS = 1运行你的应用程序来查看插件错误。

如果你看到关于“libgstaudio-0.10.so.0”的错误,这是一个GStreamer版本的问题。 官方的Qt二进制文件似乎需要GStreamer 0.10。

我找到的解决方案

  • 使用你的发行版中的libqt,使用你的包管理器:这是我找到的最好的解决方案,因为它是用正确的GStreamer版本构建的。 我使用不同的chroot来制作包含不同GStreamer版本的发行版软件包。
  • 从源代码编译Qt以启用Gstreamer 1.0 :未经测试
  • 安装Gstreamer 0.10:我不推荐这个选项,如果你需要的话,也可以使用一个早期版本的chroot。