PyQt5 - 在新窗口中打开 QMediaplayer 并播放视频

Posted

技术标签:

【中文标题】PyQt5 - 在新窗口中打开 QMediaplayer 并播放视频【英文标题】:PyQt5 - open QMediaplayer in new window and play video 【发布时间】:2018-11-15 14:27:18 【问题描述】:

这可能归结为对 python 的基本理解,但我正在努力使用 PyQt5 和 Python3 在新窗口中打开视频。

当我运行这段代码时:

from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import  QApplication
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
import sys

app = QApplication(sys.argv)
w = QVideoWidget()
w.resize(300, 300)
w.move(0, 0)
w.show()
player = QMediaPlayer()
player.setMedia(QMediaContent(QUrl.fromLocalFile(inputVideo)))
player.setVideoOutput(w)
player.play()
sys.exit(app.exec_())

窗口打开并播放视频文件。

我尝试将此代码添加到我的主程序中的一个类中,并尝试调用它,但总是失败。

我想要实现的是在主 GUI 中按下 QPushbutton 以打开一个新窗口并在该新窗口中播放视频。

正如我所说,这可能是基本的 python 编码,但我想我还没有。

非常感谢您的帮助!! 谢谢!

【问题讨论】:

【参考方案1】:

您必须构造一个QPushButtonconnectclicked 插槽来显示和播放您的视频。

(你必须先setVideoOutputsetMedia

from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication, QPushButton
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
import sys

class VideoPlayer:

    def __init__(self):
        self.video = QVideoWidget()
        self.video.resize(300, 300)
        self.video.move(0, 0)
        self.player = QMediaPlayer()
        self.player.setVideoOutput(self.video)
        self.player.setMedia(QMediaContent(QUrl.fromLocalFile("./some_video_file.avi")))

    def callback(self):
        self.player.setPosition(0) # to start at the beginning of the video every time
        self.video.show()
        self.player.play()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    v = VideoPlayer()
    b = QPushButton('start')
    b.clicked.connect(v.callback)
    b.show()
    sys.exit(app.exec_())

【讨论】:

乔纳斯,非常感谢您的回复。在调整您的示例以适合我的代码后,它可以工作了! 足以从网络链接self.player.setMedia(QMediaContent(QUrl("http://<url>:<port>/stream.mjpg"))) 流式传输视频只是为了完成答案:)

以上是关于PyQt5 - 在新窗口中打开 QMediaplayer 并播放视频的主要内容,如果未能解决你的问题,请参考以下文章

在子 multiprocessing.Process (Python3) 中打开 PyQt5 窗口

为啥在 PyQt5 中打开新窗口时我的应用程序会关闭?

Pyqt5右键单击并在新选项卡中打开

PyQt5 QMediaplayer找不到服务错误

在 PyQt5 中打开一个窗口和关闭一个窗口

在新窗口中打开弹出窗口的方式