C# 无法在Webview2上播放受DRM保护的视频流

C# 无法在Webview2上播放受DRM保护的视频流,c#,video-streaming,webview2,C#,Video Streaming,Webview2,我创建了使用Webview2 v1.0.818.41的WinUI 3.0项目,并将我的视频流应用程序加载到该项目中,但视频不会播放,并报告多个DRM错误 我还检查了安装在我电脑上的Chromium Edge版本中的应用程序的视频流是否有效,它确实有效。这是我的用户代理字符串,我验证它与我从Webview2获得的用户代理字符串匹配: Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/90.0.

我创建了使用Webview2 v1.0.818.41的WinUI 3.0项目,并将我的视频流应用程序加载到该项目中,但视频不会播放,并报告多个DRM错误

我还检查了安装在我电脑上的Chromium Edge版本中的应用程序的视频流是否有效,它确实有效。这是我的用户代理字符串,我验证它与我从Webview2获得的用户代理字符串匹配:

Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/90.0.4430.212 Safari/537.36 Ege/90.0.818.62

经过一番调查,我发现
navigator.requestMediaKeySystemAccess
是在Chromium Edge上定义的,但不是在Webview2的客户端上定义的。因为这是一个UWP应用程序,我怀疑DRM失败的原因有四种可能:

  • 开发者模式?
    • 我以前知道,在开发者模式下运行在Xbox One上的旧版Edge将DRM内容的播放限制在SL-150及以下。Webview2是否也是如此,但比传统的Edge更具限制性
  • 缺少应用权限或某些其他设置?
    • 我已经在清单中适当地设置了内容URI,并且没有任何内容与应用程序权限不符
  • Webview2还没有EME支持吗?
    • 如果是真的,这是令人惊讶的,因为EME是W3C规范,并且已经在Chromium Edge中内置了支持
  • Webview2需要实例化一些未指定的选项/标志

  • 重要的是,我还应该注意到,我见过其他使用Webview2的视频流应用程序。我能判断的唯一方法是错误发生的时间,但我在那些应用程序上看到了错误消息,表明新组件正在使用,所以我知道DRM已经被解决了。

    我能够确定这个问题的根本原因是第三方工具没有正确处理流。然而,我确实发现了以下几点:

  • Webview2从v1.0.818.41开始就支持EME
  • 开发者模式不影响播放受DRM保护的内容的能力
  • URL必须使用HTTPS,而不是HTTP或else
    navigator。requestMediaKeySystemAccess
    未定义
  • Webview2上不需要特殊的应用权限或标志