youtube视频嵌入pyqt

Posted

技术标签:

【中文标题】youtube视频嵌入pyqt【英文标题】:youtube video embedding pyqt 【发布时间】:2018-01-04 21:15:59 【问题描述】:

如何使用 PyQt5 嵌入 youtube 视频?我尝试执行以下操作,但它给了我一个未解决的错误:

DirectShowService:doRender 未解决的错误代码

from PyQt5 import QtWidgets,QtCore,QtGui
import sys, time
from PyQt5.QtCore import Qt,QUrl
from PyQt5 import QtWebKit
from PyQt5 import QtWebKitWidgets
from PyQt5.QtWebKit import QWebSettings
#from PyQt5 import QtWebEngineWidgets #import QWebEngineView,QWebEngineSettings

class window(QtWidgets.QMainWindow):
    def __init__(self):
        QWebSettings.globalSettings().setAttribute(QWebSettings.PluginsEnabled,True)
        super(window,self).__init__()
        self.centralwid=QtWidgets.QWidget(self)
        self.vlayout=QtWidgets.QVBoxLayout()
        self.webview=QtWebKitWidgets.QWebView()
        self.webview.setUrl(QUrl("https://www.youtube.com/watch?v=Mq4AbdNsFVw"))
        self.vlayout.addWidget(self.webview)
        self.centralwid.setLayout(self.vlayout)
        self.setCentralWidget(self.centralwid)
        self.show()

app=QtWidgets.QApplication([])
ex=window()
sys.exit(app.exec_())

【问题讨论】:

【参考方案1】:

您正在从 PyQt5(QtWebKitQtWebKitWidgets)导入一些已弃用的模块。看来您在导入的底部注释掉了正确的路径。

如果您解决了这些问题并使用正确的模块(QtWebEngineCoreQtWebEngineWidgets),它就可以在我的系统上运行。

from PyQt5 import QtWidgets,QtCore,QtGui
import sys, time
from PyQt5.QtCore import Qt,QUrl
from PyQt5 import QtWebEngineWidgets
from PyQt5 import QtWebEngineCore
from PyQt5.QtWebEngineWidgets import QWebEngineSettings

class window(QtWidgets.QMainWindow):
    def __init__(self):
        QWebEngineSettings.globalSettings().setAttribute(QWebEngineSettings.PluginsEnabled,True)
        super(window,self).__init__()
        self.centralwid=QtWidgets.QWidget(self)
        self.vlayout=QtWidgets.QVBoxLayout()
        self.webview=QtWebEngineWidgets.QWebEngineView()
        self.webview.setUrl(QUrl("https://www.youtube.com/watch?v=Mq4AbdNsFVw"))
        self.vlayout.addWidget(self.webview)
        self.centralwid.setLayout(self.vlayout)
        self.setCentralWidget(self.centralwid)
        self.show()

app=QtWidgets.QApplication([])
ex=window()
sys.exit(app.exec_())

我得到的输出如下所示(看起来是正确的):

【讨论】:

实际上我使用的是 Windows(PyQt5,python 3.6),但在导入 EngineCore 和 EngineWidgets 时遇到问题。没有名为 QtWebEngineWidgets 的模块 你的 PyQt5 的确切版本是什么? 精确版本 pyqt -> 5.6 和 qt -> 5.6.2 奇怪。这里的版本相同,仅在 OS X 上。您是否尝试过更新/重新安装 PyQt(不是 qt)? 会是windows的问题吗?

以上是关于youtube视频嵌入pyqt的主要内容,如果未能解决你的问题,请参考以下文章

嵌入无广告的 YouTube 视频

如何限制嵌入 youtube 视频?

如何让嵌入的 Youtube 视频自动开始播放?

如何更改嵌入式 Youtube 视频的速度

播放前隐藏 YouTube 视频嵌入图像

使用JS控制嵌入的YouTube视频