QMediaPlayer 在 Ubuntu 16.04 / Qt 5.6 上不播放任何内容

Posted

技术标签:

【中文标题】QMediaPlayer 在 Ubuntu 16.04 / Qt 5.6 上不播放任何内容【英文标题】:QMediaPlayer doesn't play anything on Ubuntu 16.04 / Qt 5.6 【发布时间】:2016-09-18 22:40:08 【问题描述】:

我在 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

...当然,我的声音在其他方面也很完美。

【问题讨论】:

相关问题:***.com/questions/22582663/… 好吧,在 1404 年你可能有 gstreamer-0.10 和 gstreamer0.10-ffmpeg 我在使用 PyQt 5.9 的 Lubuntu 16.04 上遇到了同样的问题,但我在 Lubuntu 17.10 上仍然遇到同样的问题(再次使用 PyQt 5.9) 【参考方案1】:

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

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

我找到的解决方案:

使用您的包管理器,使用您的发行版随附的 libqt:这是我找到的最佳解决方案,因为它是使用正确的 GStreamer 版本构建的。我使用不同的 chroot 为嵌入不同 GStreamer 版本的发行版制作包。 Compile Qt from source to enable Gstreamer 1.0:未测试 安装 Gstreamer 0.10:我不推荐此选项,或者如果需要,请使用具有较旧发行版的 chroot。

【讨论】:

是的,似乎可以与 Ubuntu 16.04 附带的 Qt 5.5 一起使用。这有点糟糕,因为你被一个旧的 Qt 版本困住了。但是,在这种情况下不会破坏交易。 @grubshka 对于像我这样仍然有这个问题的 Qt 新手,我能问一下我需要在上面的三个解决方案中的第一个中安装什么特定的包吗?我用过sudo apt-cache search libqt,但是得到了一个很长的列表,我不确定要安装什么。我试过libqt5multimedia5libqt5gstreamer-1.0-0,还有我需要的另一个包吗?我需要添加更多编程代码来设置我的播放器吗?感谢您的帮助!

以上是关于QMediaPlayer 在 Ubuntu 16.04 / Qt 5.6 上不播放任何内容的主要内容,如果未能解决你的问题,请参考以下文章

QMediaPlayer 在 dll 中不起作用

QMediaPlayer 和 QVideoWidget 的糟糕表现

QMediaPlayer(状态)

QMediaPlayer 在 PyQt4 中不可用?

QMediaPlayer 在睡眠前不播放

QMediaPlayer - 播放 youtube 音乐