基于PyQt5的Qt WebBrowser无法播放网页视频 求可用解决代码
问题原因
- PyQt5 默认的 QWebEngineView 没有开放媒体播放相关权限,同时浏览器内核默认要求视频播放需要用户主动触发手势,自动播放的视频会被拦截
- 默认编译的 QtWebEngine 内核未内置 H.264 等商用视频解码器,导致多数站点的MP4格式视频无法解码播放
修复后可支持视频播放的代码
from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtWebEngineWidgets import * import sys class MainWindow(QMainWindow): def __init__(self, *args, **kwargs): super(MainWindow,self).__init__(*args, **kwargs) self.browser = QWebEngineView() self.browser.setUrl(QUrl("http://www.google.com")) self.setCentralWidget(self.browser) self.show() if __name__ == '__main__': # 开启高清屏适配,可选配置 QApplication.setAttribute(Qt.AA_EnableHighDpiScaling) app = QApplication(sys.argv) # 全局配置WebEngine内核参数,开启视频播放相关支持 web_settings = QWebEngineSettings.globalSettings() web_settings.setAttribute(QWebEngineSettings.JavascriptEnabled, True) web_settings.setAttribute(QWebEngineSettings.PluginsEnabled, True) web_settings.setAttribute(QWebEngineSettings.FullScreenSupportEnabled, True) web_settings.setAttribute(QWebEngineSettings.AutoLoadImages, True) # 关闭播放需要用户手势的限制,允许视频自动播放 web_settings.setAttribute(QWebEngineSettings.PlaybackRequiresUserGesture, False) window = MainWindow() app.exec_()
额外注意事项
- 如果修改配置后仍无法播放H.264格式的视频,说明你当前安装的PyQtWebEngine版本没有内置专利解码器,你可以自行编译带专有解码器的QtWebEngine版本,或者升级到PyQtWebEngine 5.15及以上的官方最新版本,部分新版本已经内置了常用视频解码器支持
- DRM加密的付费视频、平台专属加密视频暂时无法通过该方案支持,这类内容需要单独适配DRM认证模块
内容的提问来源于stack exchange,提问作者AnonimTM
相关产品推荐
相关产品推荐

