WebKit2.WebView和 Gnome 浏览器不播放 YouTube 视频

问题描述

在 Python GTK+ 3 应用程序中,我有一个简单的 webkit2.WebView(无自定义)来显示设置的 html 字符串(无实时浏览)。 html 包含一个带有一些 youtube 视频的 javascript 灯箱。当我打开它们时,YouTube 视频框会显示,但内容无法播放,并且出现黑屏提示(“发生错误。请稍后再试。(播放 ID:...”)。
在网上找到的类似图片https://i.redd.it/gwqswatndiy11.png

然后我尝试使用 Gnome 网络浏览器(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 视频正常工作。