webkit - WebKit2.WebView(和 Gnome 浏览器)不播放 YouTube 视频
问题描述
在 Python GTK+ 3 应用程序中,我有一个简单的 WebKit2.WebView(无自定义)来显示一组 html 字符串(无实时浏览)。html 包含一个带有一些 youtube 视频的 javascript 灯箱。当我打开它们时,会显示 youtube 视频框,但无法播放内容,并且出现黑屏提示(“发生错误。请稍后再试。(播放 ID:...”)
。网络:https ://i.redd.it/gwqswatndiy11.png
然后我尝试使用 Gnome Web 浏览器(Linux Mint 18.3 上的 v 3.18.11)[基于 WebKit] 浏览 YouTube 网站,每个视频都出现了同样的问题。
当然,一切都适用于其他浏览器(Chromium 和 Firefox)。
此外,如果我在 PyGtk+ 3 应用程序中使用 WebKit1 而不是 WebKit2,则一切正常。
所以我认为问题在于Webkit2选项配置。
有谁知道如何解决这个问题?
这是我的代码的摘录。如您所见,我已经尝试设置一些选项,但没有任何效果。
[旁注:browser_settings.set_enable_media(True)
给我错误AttributeError: 'Settings' object has no attribute 'set_enable_media'
;我不明白为什么因为在文档中存在该方法]
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('GtkSource', '3.0')
gi.require_version('WebKit2', '4.0')
from gi.repository import Gtk, GtkSource, GLib, WebKit2
self.webview = WebKit2.WebView.new()
browser_settings = self.webview.get_settings()
browser_settings.set_property('javascript-can-access-clipboard', bool(True))
# browser_context = self.webview.get_context()
# cookie_manager = browser_context.get_cookie_manager()
# cookie_manager.set_accept_policy(WebKit2.CookieAcceptPolicy.ALWAYS)
# browser_settings.set_enable_xss_auditor(False)
# browser_settings.set_allow_universal_access_from_file_urls(True)
# browser_settings.set_allow_file_access_from_file_urls(True)
# browser_settings.set_enable_media(True)
# browser_settings.set_enable_media_capabilities(True)
# browser_settings.set_enable_media_stream(True)
# browser_settings.set_enable_mediasource(True)
# browser_settings.set_media_playback_allows_inline(True)
self.webview.set_settings(browser_settings)
解决方案
我最初也无法在 Ubuntu Budgie 20.10 上的 Gnome Web (3.38.1) 上播放 Youtube 视频。但我能够让它发挥作用。
我检查了软件,搜索了“gstreamer”,发现大多数 GStreamer 编解码器已经安装。
通过安装“ffmpeg plugin for GStreamer”和“GStreamer WPEWebKit plugin”,我能够制作 Youtube 视频。
推荐阅读
- c# - 如何在 C# Wpf MVVM 中基于文本块中的特殊字符拆分字符串后使用内联
- testing - 在TestNG自动化中将另一个类的一个方法的依赖项调用到另一个类时出错
- python-3.x - Python:如何在保留目录结构的同时将文件从远程机器复制到本地?
- python-3.x - Python dict 序列化:从“相同”的 dict 中获得不同的结果
- python - Pickle 文件在一台机器上工作,在另一台机器上打开时不起作用
- angular - 角度 - 如何将内容与卡片的中心对齐
- ruby-on-rails - 在 Rails 5 应用程序中找不到应用程序 javascript 文件
- android - 滚动视图无法正常工作
- python - 我用 Anaconda 安装了 SpaCy,但如何添加模型
- css - 在选择文本缩进在 Edge 中不起作用,它在所有其他浏览器中都起作用