QFrame中的Vlc播放​​器

kik*_*mii 2 python pyqt vlc pyqt5

我想把 VLC 视频播放器放在一个框架内。每次我运行它时它都会在一个新窗口中打开我如何将它放在框架内

这是代码

import sys

import os.path

from PyQt5.QtCore import Qt, QTimer

from PyQt5.QtGui import QPalette, QColor

from PyQt5.QtWidgets import QMainWindow, QWidget, QFrame, QSlider, QHBoxLayout, QPushButton, \
    QVBoxLayout, QAction, QFileDialog, QApplication

import vlc

from PyQt5 import QtCore, QtGui, QtWidgets

class Player(QMainWindow):


    def __init__(self, master=None):

        QMainWindow.__init__(self, master)

        self.setWindowTitle("Media Player")

        # creating a basic vlc instance

        self.instance = vlc.Instance()

        # creating an empty vlc media player

        self.mediaplayer = self.instance.media_player_new()

        self.isPaused = False



         ##########video frame

        self.videoframe = QFrame(self)

        self.videoframe.setGeometry(QtCore.QRect(210, 70, 391, 291))

        self.videoframe.setFrameShape(QtWidgets.QFrame.Box)

        self.videoframe.setFrameShadow(QtWidgets.QFrame.Raised)

        self.vboxlayout = QVBoxLayout()

        self.vboxlayout.addWidget(self.videoframe)




        ######### the vlc

        self.filename='C:/Users/Kikomi/Pictures/Camera Roll/kk.mp4'

        self.media = self.instance.media_new(self.filename)

        self.mediaplayer.set_media(self.media)

        self.mediaplayer.play()




if __name__ == "__main__":

    app = QApplication(sys.argv)

    player = Player()

    player.show()

    player.resize(640, 480)

    if sys.argv[1:]:

        player.OpenFile(sys.argv[1])

    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

eyl*_*esc 5

你必须要通过winId()QFrame给媒体播放器,和方法取决于每个OS作为我在下面:

import sys

import vlc

from PyQt5 import QtCore, QtGui, QtWidgets


class Player(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(Player, self).__init__(parent)
        self.setWindowTitle("Media Player")
        # creating a basic vlc instance
        self.instance = vlc.Instance()
        self.mediaplayer = self.instance.media_player_new()
        ##########video frame
        self.videoframe = QtWidgets.QFrame(
            frameShape=QtWidgets.QFrame.Box, frameShadow=QtWidgets.QFrame.Raised
        )

        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(self.videoframe.winId())

        central_widget = QtWidgets.QWidget()
        self.setCentralWidget(central_widget)
        lay = QtWidgets.QVBoxLayout(central_widget)
        lay.addWidget(self.videoframe)

        filename = "/path/of/your/video.mp4"
        media = self.instance.media_new(filename)
        self.mediaplayer.set_media(media)
        self.mediaplayer.play()


if __name__ == "__main__":

    app = QtWidgets.QApplication(sys.argv)

    player = Player()
    player.show()
    player.resize(640, 480)

    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)