2011-12-19 10 views
2

Silverlight 4からSilverlight 5にアップグレードした後、自分のプレーヤーの MediaElementがDRM h264ビデオを再生しようとすると、System.Exception 6028が発生します。私は既にコンピュータにライセンスが保存されています。System.Exception SilverlightのMediaElementからスローされた6028

これはSilverlight 5.0.61118.0で発生します。

私は、その例外の原因を特定し、ライセンスを削除して再度取得する以外の解決策を見つけることについて助けていただければ幸いです。

EDIT: PCでPlayReadyのライセンスをすべて削除しましたが、しばらくしてもう一度そのシステム例外を取得しました。この例外メッセージをコピーすることができます。

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

私はもう1つチェックしました。私のアプリがライセンスを求めているDRMサーバーは1.5.2バージョンです。 (期限切れの永続的なライセンスの場合)この問題を解決するには

答えて

2

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

、我々はMediaFailedイベントハンドラを使用する を必要としています。ハンドラで、エラーコードが 6028の場合は、LicenseAcquirerを使用してライセンスを取得する必要があります。 LicenseAcquirerは、カスタムライセンス取得者またはデフォルトの SSMEのライセンス担当者になる可能性があります。

+0

オクラホマので、ユーザーがSL5でライセンスの有効期限が切れた場合は、手動でライセンスを取得する必要があるようです。私はそうしようとしていますが、このコード: 'acq.AcquireLicenseAsync(_mediaSource.Buffer.DrmHeader.DrmHeaderBin);' (DrmHeaderは解析されたファイルからのPlayReadyヘッダーで、acqは私のカスタムライセンス取得者です) は機能しません正しく:/。 – Eloar

+0

@fxEloar問題を解決しましたか?または、あなたの正確な問題が何であるか説明できますか? – jv42

+1

@ jv42私はそれを解決しました。コード 'acq.AcquireLicenseAsync(_mediaSource.Buffer.DrmHeader.DrmHeaderBin);'は正しく動作していますが、新しいCustomLicenseAcquirerで呼び出されなければなりませんでした。なぜなら、古いものはその状態を保持しているからです。 LicenseAquisitionDoneイベントのハンドラを作成して、コンテンツの新しいライセンスを取得した後に再生を開始したり、例外時にエラーメッセージを表示したりしました。 – Eloar

0

Silverlight 5にアップグレードすると、Silverlightで使用されるPlayReadyのインストールが中断されることがあります。再生を試みると無意味なエラーが発生することがあります。

私のために働いている修正プログラムは次のとおりです。

  1. アンインストールのSilverlight 5
  2. %ProgramData%\Microsoft\PlayReady(これはまた、すべての永続ライセンスを削除することに注意してください)
  3. 再起動を削除します。いくつかのマシンでは
  4. 再インストールのSilverlight 5

、私はにPlayReadyは再び作業を取得するために、このプロセスを複数回繰り返す必要がありました。

+0

サービスクライアントに、永続的なライセンスをマシンから削除するように頼むのは難しく、役に立たないかもしれません。私のプレーヤーコードにはほんのわずかな変更があり、ユーザーからの操作は必要ありません。 – Eloar

1

前の回答の1で述べたように、あなたが6028のエラーコード(期限切れの永続的なライセンスの場合)この問題を解決するには

をチェックする必要があり、我々はMediaFailed>イベントハンドラを使用する必要があります。ハンドラでは、エラーコードが6028であれば、LicenseAcquirer>を使用してライセンスを取得するだけです。 LicenseAcquirerは、カスタムのLicenseAcquirerでも、SSMEのデフォルト> LicenseAcquirerでもかまいません。私たちは、カスタムライセンス取得を使用していた以下の例ではshownedとして

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();  
    } 
} 
2

これは、Silverlight 5.1.10411.0で修正されました。マイクロソフトから

リリースノート:

修正永続的なライセンスの取得が失敗する問題がいつからのSilverlight 4からのSilverlight 5

への顧客のアップグレード:http://www.microsoft.com/getsilverlight/locale/en-us/html/Microsoft%20Silverlight%20Release%20History.htm

+0

OCPに対する彼らの想定された「修正」は、多くのクライアントPCでのDRM保護ファイルの再生を実際に破ったことに注意してください(エラー6030)。 – jv42

+0

このエラーは、PlayReady SDK 2.1で100%確実ではなく修正できると思います。 – Nitro

+1

はい、そうですが、PlayReadyサーバーへの更新を展開する必要があります。 – jv42

関連する問題