小编the*_*eav的帖子

(PyQt)如何将VLC实例插入QFrame

我试图通过在PyQt小部件(QFrame)中嵌入VLC实例来制作一个简单的视频播放器应用程序.我发现了一些例子,但是我的代码不太合适.当我启动它时,它会播放"test_video.mp4",但它会在自己独立的窗口中启动常规VLC播放器应用程序.当我关闭VLC播放器窗口时,显然视频停止,但音频继续播放,直到我关闭我自己的Qt(PyQt)窗口.

编辑1:忘了提到我正在使用python-vlc,通过pip下载.

    ### video_player.py

    import sys
    import vlc
    from PyQt4 import QtCore, QtGui
    from video_player_main_window import Ui_MainWindow

    class StartQT4(QtGui.QMainWindow):
        def __init__(self, parent=None):
            QtGui.QWidget.__init__(self, parent)
            self.ui = Ui_MainWindow()
            self.ui.setupUi(self)

            self.vlc_instance = vlc.Instance("--no-xlib --sout-all")
            self.mediaplayer = self.vlc_instance.media_player_new()
            self.mediaplayer.set_xwindow(self.ui.video_frame.winId())
            print(self.ui.video_frame.winId())
            self.media_path = "test_video.mp4"
            self.media = self.vlc_instance.media_new(self.media_path)
            self.mediaplayer = self.vlc_instance.media_player_new()
            self.mediaplayer.set_media(self.media)
            self.mediaplayer.play()

    if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        myapp = StartQT4()
        myapp.show()
        sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

我添加了一个"print(self.ui.video_frame.win())",仅用于调试/健全性检查以确保它是合法的值.下面的命令行输出.在我的PyQt窗口仍在运行时关闭VLC窗口后出现"X服务器故障".

### command line output

106954771
[00007f9c48055168] vdpau_avcodec generic error: Xlib is required for VDPAU
[00007f9c3c003968] xcb_window window error: X …
Run Code Online (Sandbox Code Playgroud)

pyqt vlc python-3.x

6
推荐指数
1
解决办法
1051
查看次数

标签 统计

pyqt ×1

python-3.x ×1

vlc ×1