python -vl c работает на MacOS, но не на raspberry-pi - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь найти причину, по которой видеоплеер на основе python -vl c отображается в виджете PYQT5 на MacOS, но не на Linux. Может быть, кто-нибудь может мне помочь, пожалуйста?

    def camViewer(self, parent):
        self.instance = vlc.Instance()

        self.mediaplayer = self.instance.media_player_new()
        self.mediaplayer.audio_set_mute(True)

        self.createUI()
        self.mediaplayer.play()

   def createUI(self):
        self.widget = QtWidgets.QWidget(self.tabOctoprint1)
        self.widget.setGeometry(QtCore.QRect(0, 40, 640, 380))
        self.widget.setObjectName("widget")

        # In this widget, the video will be drawn
        # if sys.platform == "darwin": # for MacOS
        #     self.videoframe = QtWidgets.QMacCocoaViewContainer(0)
        # else:
        #     self.videoframe = QtWidgets.QFrame()

        self.videoframe = QtWidgets.QFrame(self.widget)

        self.palette = self.videoframe.palette()
        self.palette.setColor(QtGui.QPalette.Window,
                              QtGui.QColor(0, 0, 0))
        self.videoframe.setPalette(self.palette)
        self.videoframe.setAutoFillBackground(True)
        self.videoframe.show()

        self.vboxlayout = QtWidgets.QVBoxLayout()
        self.vboxlayout.addWidget(self.videoframe)
        self.widget.setLayout(self.vboxlayout)

        filename = "http://xxx.yy:8081"

        if sys.version < '3':
            filename = unicode(filename)
        self.media = self.instance.media_new(filename)

        self.mediaplayer.set_media(self.media)

        self.media.parse()

        self.setWindowTitle(self.media.get_meta(0))

        if sys.platform.startswith('linux'):  # for Linux using the X Server
            self.mediaplayer.set_xwindow(self.videoframe.winId())
        elif sys.platform == "win32":  # for Windows
            self.mediaplayer.set_hwnd(self.videoframe.winId())
        elif sys.platform == "darwin":  # for MacOS
            self.mediaplayer.set_nsobject(int(self.videoframe.winId()))

        #self.widget.setMouseTracking(True)

        self.mediaplayer.play()

        self.videoframe.sizeHint()

Как уже говорилось, на MacOS все работает правильно. Когда я запускаю приложение на Linux, все отображается, кроме проигрывателя VL C.

Ах да ... Кстати: Linux версия - это Raspbian на RPI4. Может быть проблема в 32-битном armv7l? Если да, есть ли шанс заставить это работать?

...