如何在 Microsoft WebView2 中启用媒体自动播放?

问题描述 投票:0回答:3

我正在使用 WinForms 应用程序,并在其中创建了一个 WebView2 实例来使用 HTML5 播放媒体内容。我一直在研究文档以找到某种方法,可以在 WebView2 中启用自动播放,以便我的桌面应用程序无需用户交互即可播放视频。

我尝试过的事情。

  • 我按照此文档更改了注册表,但没有成功
  • 我还从 Microsoft Edge 中启用了自动播放,但没有任何效果。

谢谢!

c# winforms asp.net-core webview2
3个回答
3
投票

经过深入研究,我找到了解决方案,我的团队负责人也找到了解决方案。

我排序的第一个解决方案是在初始化 WebView2 后立即执行单击 WebView2 窗口的解决方法,使用此 SO Answer。这可以通过注册

WebView2.NavigationCompleted
事件来实现。

第二种方案更加优雅、合适;虽然还需要最后润色,但任何人都可以根据自己的喜好进行改进。

var options = new CoreWebView2EnvironmentOptions("--autoplay-policy=no-user-gesture-required");
var path = @"C:\Program Files (x86)\Microsoft\EdgeWebView\Application\92.0.902.67";
var environment = await CoreWebView2Environment.CreateAsync(path, null, options);

var webView = new WebView2();
await webView.EnsureCoreWebView2Async(environment);

请注意,变量“path”包含WebView2运行时执行文件所在的目录。当微软发布新版本时,该路径将会改变。您还可以下载 WebView2 固定运行时并将其包含在您的项目依赖项中。


3
投票

也可以这样。对我有帮助

public MainWindow()
    {
        Environment.SetEnvironmentVariable("WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS", "--autoplay-policy=no-user-gesture-required");
        InitializeComponent();
    }

0
投票

我在根据接受的答案设置策略/权限时遇到了同样的问题,但回调从未被调用。我使用的是 C++,本质上是相同的代码。

最简单的方法是生成任何事件,该事件在加载视频之前由 WebView2 立即处理,例如:

INPUT inputs[1] = { {0} };
inputs[0].type = INPUT_KEYBOARD;
inputs[0].ki.wVk = '*';
::SendInput(ARRAYSIZE(inputs), inputs, sizeof(INPUT));

有 C# 模拟

SendKeys
。对我来说 100% 有效。

我也想知道设置权限有什么问题,但几乎可以肯定没有人会回答(

add_PermissionRequested
很好,然后什么也没有)。 谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.