4

I am using PyQt5 on Ubuntu 18.04.3 LTS. I'm trying to play a .mp3 file using QtMultimedia.QMediaPlayer. This is my code:

import sys

from PyQt5 import QtCore, QtMultimedia
from PyQt5.QtWidgets import QApplication, QMainWindow


class MyWidget(QMainWindow):
    def __init__(self):
        super().__init__()
        media = QtCore.QUrl.fromLocalFile(sys.path[0] + '/sounds/banjo_A5_forte_normal.mp3')
        content = QtMultimedia.QMediaContent(media)
        self.player = QtMultimedia.QMediaPlayer()
        self.player.setMedia(content)
        self.player.play()


app = QApplication(sys.argv)
ex = MyWidget()
ex.show()
sys.exit(app.exec_())

But it gets SIGSEGV when I run it.

When I debug in PyCharm, set breakpoint to self.player = QtMultimedia.QMediaPlayer() and resume program, it works but gives warning:

(python:12491): GStreamer-WARNING **: 17:53:39.905: Failed to load plugin '/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so': /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so: undefined symbol: gst_gl_display_egl_get_from_native

(python:12491): GStreamer-WARNING **: 17:53:40.030: Failed to load plugin '/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so': /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so: undefined symbol: gst_gl_display_egl_get_from_native

Edit: Command from comments. Can't just post 'mostly code'

Output from ldd /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so:

    linux-vdso.so.1 (0x00007ffc8f5b4000)
    libgstcodecparsers-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstcodecparsers-1.0.so.0 (0x00007f1458a4b000)
    libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007f145883a000)
    libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007f145861c000)
    libva-drm.so.2 => /usr/lib/x86_64-linux-gnu/libva-drm.so.2 (0x00007f1458419000)
    libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f145820e000)
    libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f1458004000)
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f1457ccc000)
    libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007f1457a40000)
    libva-x11.so.2 => /usr/lib/x86_64-linux-gnu/libva-x11.so.2 (0x00007f145783a000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1457636000)
    libEGL.so.1 => /usr/lib/x86_64-linux-gnu/libEGL.so.1 (0x00007f1457422000)
    libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f145721e000)
    libva-wayland.so.2 => /usr/lib/x86_64-linux-gnu/libva-wayland.so.2 (0x00007f1457019000)
    libva.so.2 => /usr/lib/x86_64-linux-gnu/libva.so.2 (0x00007f1456df8000)
    libwayland-client.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007f1456be9000)
    libgstgl-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstgl-1.0.so.0 (0x00007f1456983000)
    libgstpbutils-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstpbutils-1.0.so.0 (0x00007f145674b000)
    libgstvideo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstvideo-1.0.so.0 (0x00007f14564b2000)
    libgstbase-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstbase-1.0.so.0 (0x00007f145623d000)
    libgstallocators-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstallocators-1.0.so.0 (0x00007f1456039000)
    libgstreamer-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0 (0x00007f1455cfe000)
    libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f1455aaa000)
    libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f1455793000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f14553f5000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f14551d6000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1454de5000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f1454bdd000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f1458f6c000)
    libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f14549cb000)
    libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f14547a3000)
    libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f1454572000)
    libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f14542bc000)
    libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f14540b6000)
    libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f1453eae000)
    libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f1453cac000)
    libwayland-egl.so.1 => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007f1453aaa000)
    libgbm.so.1 => /usr/lib/x86_64-linux-gnu/libgbm.so.1 (0x00007f145389c000)
    libgudev-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgudev-1.0.so.0 (0x00007f1453692000)
    libgstaudio-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstaudio-1.0.so.0 (0x00007f145341d000)
    libgsttag-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgsttag-1.0.so.0 (0x00007f14531e2000)
    liborc-0.4.so.0 => /usr/lib/x86_64-linux-gnu/liborc-0.4.so.0 (0x00007f1452f66000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f1452cf4000)
    libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f1452af0000)
    libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f14528ea000)
    libwayland-server.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-server.so.0 (0x00007f14526d7000)
    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f14524a5000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f1452288000)
    libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f1452073000)
Timofey X
  • 73
  • 5

1 Answers1

0

I use the following command to enable the use of Qt MultiMedia in docker(ubuntu:18.04) so I guess it should also serve you.

sudo apt-get install -y --no-install-recommends \
        libgstreamer1.0-0 \
        gstreamer1.0-plugins-base \
        gstreamer1.0-plugins-good \
        gstreamer1.0-plugins-bad \
        gstreamer1.0-plugins-ugly \
        gstreamer1.0-libav \
        gstreamer1.0-doc \
        gstreamer1.0-tools \
        libpulse-mainloop-glib0 \
        alsa-base \
        alsa-utils \
        pulseaudio
eyllanesc
  • 235,170
  • 19
  • 170
  • 241
  • Have forgotten about this. apt says that gstreamer1.0-plugins-bad is broken. Error message in Russian: `Следующие пакеты имеют неудовлетворённые зависимости: gstreamer1.0-plugins-bad : Зависит: libgstreamer-plugins-bad1.0-0 (= 1.14.0-1ubuntu1) но 1.14.5-0ubuntu1~18.04.1 должен быть установлен E: Невозможно исправить ошибки: у вас зафиксированы сломанные пакеты. ` Installed without -bad package, error is the same – Timofey X Jan 20 '20 at 17:17
  • @TimofeyX Have you tried removing that part of my command? Does it work if you remove that dependency? I tested it with docker a week ago and I didn't get that warning – eyllanesc Jan 20 '20 at 17:19
  • Yes; I just accidentally sent not full comment, it's edited now – Timofey X Jan 20 '20 at 17:23
  • @TimofeyX I do not understand Russian for what you will have to translate, and your answer seems confusing, 1) Have you tried removing that part of my command?, 2) did my solution work for you?, 3) How have you installed pyqt5? 4) what is the output of `ldd /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so`? – eyllanesc Jan 20 '20 at 17:25
  • Yes, I removed the -bad part. Packages installed successfully, but my program gives the same error. – Timofey X Jan 20 '20 at 17:29
  • @TimofeyX Answer the enumerated questions I have asked you – eyllanesc Jan 20 '20 at 17:30
  • @TimofeyX also see http://www.iasptk.com/ubuntu-fix-broken-package-best-solution/ – eyllanesc Jan 20 '20 at 17:35
  • 1) Yes. 2) No. 3) `sudo apt install pyqt5-dev-tools qtcreator && pip install PyQt5` – Timofey X Jan 20 '20 at 17:43
  • 4) doesn't fit. 49 lines – Timofey X Jan 20 '20 at 17:45
  • @TimofeyX Edit your question and add the 49 lines – eyllanesc Jan 20 '20 at 17:46
  • Edited my question – Timofey X Jan 20 '20 at 17:55
  • @TimofeyX Try what http://www.iasptk.com/ubuntu-fix-broken-package-best-solution/ points to install the plugin that you have trouble installing. – eyllanesc Jan 20 '20 at 17:57
  • Ok, it's another broken packages error. I have something like `gstreamer1.0-plugins-bad : depends: libgstreamer-plugins-bad1.0-0 (= 1.14.0-1ubuntu1) but 1.14.5-0ubuntu1~18.04.1 must be installed` – Timofey X Jan 20 '20 at 18:14