2

从 Silverlight 4 升级到 Silverlight 5 后,当 MediaElement我在自己的播放器中尝试播放 DRM h264 视频时,我得到 System.Exception 6028。当我的计算机上已经存储了许可证时,就会发生这种情况。

这发生在 Silverlight 5.0.61118.0 上。

我将不胜感激任何帮助确定该异常的原因,并找到除删除许可证并再次获取它们之外的解决方案。

编辑:我删除了我 PC 上的所有 PlayReady 许可证,但过了一段时间我确实再次遇到了该系统异常。一件好事是我可以复制此异常消息:

System.Exception: 6028 No valid simple or leaf license is available to create the decryptor

我确实检查了另一件事。我的应用程序要求许可证的 DRM 服务器是 1.5.2 版本。

4

4 回答 4

2

检查http://blogs.msdn.com/b/playready4/archive/2011/12/08/playready-license-acquisition-fails-after-upgrading-to-silverlight-5.aspx

要解决此问题(在持久许可证过期的情况下),我们需要使用 MediaFailed 事件处理程序。在handler中,如果错误码是6028,我们只需要使用LicenseAcquirer来获取License即可。LicenseAcquirer 可以是自定义 LicenseAcquirer 或 SSME 的默认 LicenseAcquirer。

于 2012-01-03T12:49:25.983 回答
2

只是一个更新,对于新读者,这已在 Silverlight 5.1.10411.0 中解决。

来自 Microsoft 的发行说明:

修复了当客户从 Silverlight 4 升级到 Silverlight 5 时永久许可证获取失败的问题。

来自: http: //www.microsoft.com/getsilverlight/locale/en-us/html/Microsoft%20Silverlight%20Release%20History.htm

于 2012-05-21T11:56:33.013 回答
1

如上一个答案之一所述,您应该检查 6028 错误代码

要解决这个问题(在持久许可证过期的情况下),我们需要使用 MediaFailed >event handler。在handler中,如果错误码是6028,我们只需要使用LicenseAcquirer >获取license即可。LicenseAcquirer 可以是自定义 LicenseAcquirer 或 SSME 的默认 >LicenseAcquirer。

如下例所示,我们使用了自定义许可证获取器。

protected void OnMediaFailed(object sender, CustomEventArgs<Exception> e)
{
    if (e.Value.Message.StartsWith("6028"))
    {
        //Get Manifest Info Somehow
         ........
        //our custom acquirer initialization
        var acquirer = new ManualLicenseAcquirer(); 
        if (manifestInfo != null 
        && manifestInfo.ProtectionInfo != null
        && manifestInfo.ProtectionInfo.ProtectionHeader != null)
    {
        acquirer.AcquireLicenseCompleted += this.OnLAcquirerCompleted;
        acquirer.AcquireLicenseAsync(manifestInfo.ProtectionInfo.ProtectionHeader.ProtectionData);
    }
    else
    {
        this.ShowCustomError("Manifest info is null or protection header is null", true, true);
    }
}

private void OnLAcquirerCompleted(object sender, AcquireLicenseCompletedEventArgs e)
{
    if (e.Error != null)
    {
        this.ShowCustomError(string.Format("Server response error: {0}", e.Error), true, true);
    }
    else if (e.Cancelled)
    {
        this.ShowCustomError(string.Format("Manual license acquier request was cancelled"), true, true, true);
    }
    else
    {
        this.Play();    
    }
}
于 2012-01-31T12:10:11.657 回答
0

我发现升级到 Silverlight 5 经常会破坏 Silverlight 使用的 PlayReady 安装,当您尝试播放时会出现无意义的错误。

对我有用的修复是:

  1. 卸载 Silverlight 5
  2. 删除%ProgramData%\Microsoft\PlayReady(请注意,这也会删除所有永久许可证)
  3. 重新开始。
  4. 重新安装 Silverlight 5

在某些机器上,我需要多次重复此过程才能让 PlayReady 再次工作。

于 2012-01-12T07:21:39.923 回答