Я пытаюсь найти причину, по которой видеоплеер на основе 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? Если да, есть ли шанс заставить это работать?