如何通过我的播放器将视频嵌入到QWidget框架中?

时间:2012-06-15 13:24:39

标签: python pyqt4

是否可以在PyQt4中通过mpylayer将视频嵌入QWidget(或其中的子类)。如果是这样,你能提供一个最小的工作实例。

2 个答案:

答案 0 :(得分:3)

有关嵌入MPlayer的Qt Widget的完整示例,请尝试qmpwidget

但这是一个最小的PyQt演示,可以帮助您入门:

import mpylayer
from PyQt4 import QtGui, QtCore

class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.container = QtGui.QWidget(self)
        self.container.setStyleSheet('background: black')
        self.button = QtGui.QPushButton('Open', self)
        self.button.clicked.connect(self.handleButton)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.container)
        layout.addWidget(self.button)
        self.mplayer = mpylayer.MPlayerControl(
            'mplayer', ['-wid', str(self.container.winId())])

    def handleButton(self):
        path = QtGui.QFileDialog.getOpenFileName()
        if not path.isEmpty():
            self.mplayer.loadfile(unicode(path))

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.resize(640, 480)
    window.show()
    sys.exit(app.exec_())

NB :此演示版仅在Linux上测试过)

答案 1 :(得分:1)

您必须获取小部件的句柄(id)→http://qt-project.org/doc/qt-4.8/qwidget.html#winId 并将其传递给MPlayer的-wid选项。

我不能为你提供Qt的例子,因为我不知道Qt,但我已经为wxPython编写了一个MplayerCtrl:https://bitbucket.org/dav1d/mplayerctrl

相关守则:https://bitbucket.org/dav1d/mplayerctrl/src/c680a1d99ad2/MplayerCtrl.py#cl-873