2016-09-18 117 views
3

我使用的是在Ubuntu 16.04正式的Qt 5.6的SDK玩什麼,當我嘗試播放MP3文件我只是得到:QMediaPlayer不會在Ubuntu 16.04/Qt的5.6

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 

...當然還有我的聲音工作,否則完美。

+0

相關問題:http://stackoverflow.com/questions/22582663/qt-no-service-found-for-org-qt-project-qt-mediaplayer-on-building-static –

+0

好吧,在1404可能你有gstreamer-0.10和gstreamer0.10-ffmpeg – Giancarlo

+0

我在使用PyQt 5.9的Lubuntu 16.04上遇到了同樣的問題,我在Lubuntu 17.10上仍然有這個問題(再次用PyQt 5.9) – sunyata

回答

2

首先,使用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。
+0

是的,似乎工作正常使用Ubuntu 16.04附帶的Qt 5.5。這有點糟糕,因爲你被老Qt版本困住了。然而,在這種情況下不是交易斷路器。 – juzzlin

+0

@grubshka對於像我這樣的Qt新手來說,仍然存在這個問題,我可以問一下我需要在上面三種解決方案中的哪一種上安裝特定的包?我已經使用'sudo apt-cache search libqt',但是得到一個很長的列表,我不確定要安裝什麼。我試過'libqt5multimedia5'和'libqt5gstreamer-1.0-0',是否有另一個我需要的軟件包?我是否需要添加更多編程代碼來設置我的播放器?感謝您的幫助! – sunyata