PlayReadyのサンプル

PlayReadyリファレンス実装は、PlayReadyコンテンツ保護を実装および初期化するために必要な サンプルコードを紹介します。

承認トークンの構造

PlayReady DRM用のコードを作成する手助けとして、OoyalaはSilverlightで 作成されたサンプルコードを含むリファレンス実装をZIPファイルにて提供いたします。 PlayReady_SRC.zip ファイルに含まれる例は、ライセンスリクエストの方法を紹介しています。PlayReady_SRC.zip ファイルはアカウントマネージャーから 入手してください。高度な承認リクエストを適切に行うために必要なコード作成時には、以下が必要です。
  • Ooyalaへ承認リクエストを行う (PlayReadyワークフロー 表のステップ3参照)。

  • auth_responseのストリームURLおよびauth_tokenを解析します。

  • auth_tokenをPlayReadyライセンスリクエストに挿入して、smooth streamを再生します (前述の PlayReadyワークフロー表のステップ5参照)。

PlayReadyワークフローのステップ3にて承認リクエストを作成します。この承認リクエストに有効な Ooyalaプレイヤートークンが含まれる場合、auth_tokenを含むレスポンスが返ります。この承認トークンは次のような形式になります。

```
{"authorization_data"=> ...,
"debug_data"=>...,
"auth_token" => "foo",
"signature"=> ...
}

```

PlayReadyワークフローのステップ5に示すとおり、PlayReadyライセンスリクエストにはauth_tokenが 含まれている必要があります。

(http://www.iis.net/downloads/microsoft/smooth-streaming-client-sdk) でダウンロード可能なSmooth StreamクライアントSDKをPlayReadyとともに 使用することができます。サンプルはアカウントマネージャーから入手 できます。サンプルではIIS (Smooth StreamクライアントSDK)を使用してsmooth streamを 再生する方法、およびライセンスリクエストの作成方法が示されています。以下はC#で書かれたサンプルから引用しています。

  • 承認リクエストからストリームURLを取得する方法。
  • 承認レスポンスにauth_tokenが含まれる場合、ライセンスリクエストにauth_tokenを挿入する方法。
// Make an authorization request first, then get the manifest and auth token from the response.
           WebClient client = new WebClient();
           client.DownloadStringCompleted += (target, eventData) =>
           {
               try
               {
                   OutputText.Text += "Authorization response received\n";
                   JsonObject response = (JsonObject)JsonObject.Load(new StringReader(eventData.Result));

// The stream url is obtained from the authz response.
                   Byte[] streamUrlArray = Convert.FromBase64String(((JsonObject)
                                       response["authorization_data"]).Values.First()["streams"][0]["url"]["data"]);
                   String streamUrl = Encoding.UTF8.GetString(streamUrlArray, 0, streamUrlArray.Length);

// If the authz response includes an auth token, insert it into the license request.
                   if(response.ContainsKey("auth_token"))
                   {
                       SmoothPlayer.LicenseAcquirer.ChallengeCustomData
                           = "auth_token=" + response["auth_token"];
                   }
                   SmoothPlayer.AutoPlay = true;
                   SmoothPlayer.SmoothStreamingSource = new Uri(streamUrl);
               }
               catch (Exception exception)
               {
                   OutputText.Text += "Error: " + exception.ToString() + "\n";
               }
           };

// For the purpose of this sample, the authorization url is set by the user. See Authorization API docs for how to
// construct the Authorization request, and Ooyala Player Tokens.
           OutputText.Text += "Making authorization Request\n";
           client.DownloadStringAsync(new Uri(UrlText.Text));
       }

別種類のクライアントライブラリの場合、次のCustomDataとしてライセンスリクエストはauth_tokenを含む必要があります。 '/soap:Envelop/soap:Body/AquireLicense/challenge/Challenge/LA/CustomData' 次の例は、他のクライアントライブラリの場合のauth_tokenを ライセンスリクエストに挿入する方法を説明しています。

```
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Body>
    <AcquireLicense xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols">
     <challenge>
       <Challenge xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/messages">
         <LA xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols" Id="SignedData" xml:space="preserve">
           ...
           <CustomData>auth_token=foo</CustomData>
         </LA>
       </Challenge>
     </challenge>
    </AcquireLicense>
 </soap:Body>
</soap:Envelope>
   
```

この記事はお役にたちましたか?