同時ストリーム数制限の視聴者への適用

Ooyala Backlotプロバイダーアカウントに対して同時ストリーム数の制限を設定することができます。.お客様のそれぞれの視聴者 (特定のアカウント) は同じ制限が適用されます。 この制限はプロバイダーアカウントのすべてのシンジケーショングループに適用されます。Ooyalaサービスとともに、 視聴者がビデオを再生していることを示すプログラム的なハートビートを管理することで、この制限を実施します。制限に達すると、同時ストリーム数が制限値以下になるまで、一切のビデオへのアクセスを禁止します。

制限の有効化

この機能を利用してみたい方は、Ooyalaカスタマー サクセスマネージャーまで有効化を要請してください。設定した制限の上限値 (同時ストリーム数の 最大値)を用意します。

Backlot UIまたはBacklot APIコールを使用して お客様自身でもこの制限を有効化できます。しかしながら、上限値の指定に関してはカスタマーサクセス マネージャーまでお問い合わせください。制限値を間違って変更してしまうことのないように、変更は カスタマーサクセスマネージャーのみが行えます。

Backlot UIでの変更法

  1. Backlot UIにログインします。
  2. 公開タブへ移動します。
  3. シンジケーションコントロールサブタブへ移動します。
  4. 左側から適切なシンジケーショングループまたはデフォルトグループを選択します。
  5. 右側にて、Ooyalaプレイヤートークンが必要のチェックボックスが選択されていることを確認します。
  6. Ooyalaプレイヤートークンが必要以下で、ユーザーごとの同時ストリーム数を制限にチェックをつけます。
  7. カスタマーサクセスマネージャーに連絡して、上限値を設定してもらいます。

Backlot APIを使用しての変更法

  1. property restrict_concurrent_streamsプロパティの値をtrueにして、適切な発行ルールに追加します。次の例では、https://api.ooyala.comに呼び出しを行い、このプロパティをすでに作成済みの発行ルールに追加しています。
    [PATCH] /v2/publishing_rules/9b70a34a67881c7a291d8b
    {
         “restrict_concurrent_streams” : “true”
    }
    
  2. カスタマーサクセスマネージャーに連絡して、上限値を設定してもらいます。

制限の仕組み

同時ストリーム数制限はHTML5プレイヤー、Flashプレイヤー、Google Androidアプリケーション、 Apple iOSアプリケーションに実施できます。

Ooyalaサービスは、それぞれの視聴者(カスタマーアカウント)に対してアクティブなストリームの数をカウントします。視聴者があるコンテンツにアクセスしようとする際、クライアントアプリケーションプログラムがOoyalaの 承認APIを呼び出します。システムは以下を返します。

  • ハートビートが必要とされる目安: require_heartbeat
  • 承認トークン: auth_token
  • ハートビートの間隔(秒): heartbeat_interval

プログラムがハートビートを維持している限り、同時ストリーム数のカウントは維持されます。視聴者がページから離れる、または携帯アプリケーションを終了すると、ハートビートの送信をやめ、サービスはカウントを1つ減らします。

次の表は左から右、そして下へとアクションの流れを示しています。
視聴者 クライアントアプリケーション Ooyala
アクセスアカウント 承認APIにGETを発行 同時ストリーム数を1増やす
返り値:
  • require_heartbeat に次の値を設定。 true
  • auth_token
  • heartbeat_interval (秒)
  直ちに、auth_tokenをOoyalaに対してハートビートとして送信します。  
再生を開始して続けます。 ハートビートとしてauth_tokenheartbeat_interval秒ごとに送信します [OK]のレスポンスを返します。

同時ストリーム数を維持

再生終了 ハートビートの送信を停止 同時ストリーム数を1減らします

ウェブページから離れるか、クライアントアプリケーションを終了させると、サービスは一定間隔で ハートビートを受け取ることがなくなり、ストリームが停止、auth_tokenは 無効になり、同時ストリーム数が1減ります。

コンテンツ保護を実施するために、セキュリティ上の理由により、Ooyalaはトークンの有効期限が切れる期間を 公表していません。

ハートビートHTTPリスエスとレスポンスの構文

ハートビートを維持するためのGETリクエストの構文は以下の通りです。

[GET] /sas/player_api/v1/auth_heartbeat/pcode/pcode/auth_token/auth_token    
  

pcodeはプロバイダーコードを表し、auth_tokenはOoyalaサービスが返すauth_tokenプロパティの値です。

Note: コンテンツ保護を実施するために、auth_tokenを含むレスポンスを初回受け取ると同時にハートビートを送信します。最初のハートビートを送信する際に heartbeat_interval秒待つことのないようにします。

その後、ウェブページから離れるか、アプリケーションを終了するまで、heartbeat_interval秒 間隔でハートビートをGETします。

ハートビートリクエストの正しいレスポンスは以下のようになります。

{"message"=>"OK",
 "timestamp"=>1360877041,
 "signature"=>"2sBWFegOi+hqvz4ektiHM/VzO3cUoQ2c+5/YOgyldtw="} 

“OK”以外のメッセージは失敗を意味するので、直ちに再生を中止します。

すべてのプロパティを含む完全サンプル

次の例は、同時ストリーム数制限を実施するために 必要なプロパティ(最終部分付近)を強調している承認APIへの初回のGETリクエストとレスポンスです。require_heartbeat, auth_token, および heartbeat_intervalです。実際に返ってくる値は ここでお見せしているものよりかなり長くなります。次は、 ハートビートを維持するためのリクエスト/レスポンスの流れです。

最初のリクエスト

[GET] http://player.ooyala.com/sas/player_api/v1/authorization/embed_code/FoeGbkH9m/VxMDhwFbICE7ojQ9jZM?
domain=gnarly.com&embedToken=http%3A%2F%2Fplayer.ooyala.com%2Fsas%2Fembed_token%FoeGbkH9%3Faccount_id%3DTest_Account%26
api_key%3xxx%26expires%3Dyyy%26signature%3zzz
レスポンス
{"authorization_data"=>
  {"VxMDhwNzoq2j8qfyiG6FbICE7ojQ9jZM"=>
    {"authorized"=>true,
     "code"=>"0",
     "message"=>"authorized",
     "request_timestamp"=>"1360878715",
     "retry"=>nil,
     "synd_rule_failures"=>nil,
     "require_heartbeat"=>true,
     "streams"=>
      [{"delivery_type"=>"hds",
        "url"=>
         {"format"=>"encoded",
          "data"=>
        "aHR0cDovLmY0bQ=="}}]}},
 "user_info"=>
  {"ip_address"=>"192.168.1.1",
   "domain"=>"gnarly.com",
   "request_timestamp"=>"1360878715",
   "account_id"=>"johnsmith",
   "country"=>"UNKNOWN",
   "timezone"=>-8.0,
   "continent"=>"NA"},
 "debug_data"=>
  {"server_latency"=>"58.778999999999996",
   "request_id"=>"4f397d7f6091ce8e7d43354c424095fe",
   "user_info"=>{"request_timestamp"=>"1360878715"}},
 "auth_token"=>
  "WGd5uZ29WTFBpeDlnPT0K",
 "heartbeat_data"=>{"heartbeat_interval"=>300},
 "signature"=>"b09xu7UxL/uFRJ9MOkmhISpRSF21zcOK+7iv1LfcNVA="}
 
すぐに ハートビートを送信
[GET] http://player.ooyala.com/sas/player_api/v1/auth_heartbeat/pcode/FoeGbkH9m/auth_token/WGd5uZ29WTFBpeDlnPT0K
レスポンス
 {"message"=>"OK",
 "timestamp"=>1360877041,
 "signature"=>"2sBWFegOi+hqvz4ektiHM/VzO3cUoQ2c+5/YOgyldtw="}
300秒ごと
[GET] http://player.ooyala.com/sas/player_api/v1/auth_heartbeat/pcode/FoeGbkH9m/auth_token/WGd5uZ29WTFBpeDlnPT0K
レスポンス
{"message"=>"OK",
 "timestamp"=>1360877046,
 "signature"=>"2sBWFegOi+hqvz4ektiHM/VzO3cUoQ2c+5/YOgyldtw="}
 

制限に達した時

制限が上限値に達すると、視聴者は承認に失敗します。authorized 失敗メッセージの下にある、レスポンスボディには 18に設定された code および説明メッセージが含まれています。

.
.
.
{"authorized"=>false,
   "code"=>"18",
     "message"=>"Too many open videos. Close other videos on this account and try again in a few minutes.",
    "request_timestamp"=>"1361401545",
    "retry"=>nil,
    "synd_rule_failures"=>nil,
    "require_heartbeat"=>true}
.
.
.
Ooyalaの HTML5およびFlashプレイヤーはこのエラーメッセージをキャッチし、視聴者にポップアップメッセージを表示します。

モバイルアプリケーションでキャッチすべき例外

モバイルクライアントアプリケーション (Google AndroidおよびApple iOS)では、承認失敗時または ハートビートの受信失敗時、次の例外が発生します。
Google Android Apple iOS 発生タイミング
ERROR_AUTHORIZATION_

FAILED

OOOoyalaErrorCodeAuthorizationFailed 同時ストリーム数が上限に達した
ERROR_AUTHORIZATION_

HEARTBEAT_FAILED

OOOoyalaErrorCodeHeartbeatFail ハートビートリクエストの失敗

これら例外の発生時、クライアントアプリケーションで適切なメッセージを表示するために必ず例外を キャッチする必要があります。たとえば、AndroidのJavaの場合、承認とハートビートのためのGETは try/catch 句の中に入れてください。iOSの場合、お客様の企業での標準的な「例外処理」を使用してください。

モバイルおよびデスクトップでのその他推奨される挙動

どのようなアプリケーションにおいても、視聴者がビデオを一時停止した場合でも、ハートビートは送信し続けてください。

デスクトップおよび携帯デバイスのどちらでも、視聴者はアプリケーションをバックグランドでサスペンドさせることができます。

  • モバイルアプリケーションでは、バックグランドへ回す前にタイムスタンプを保存して、ハートビートの送信を停止します。視聴者がアプリケーションを再開すると、保存したタイムスタンプを確認します。経過時間が heartbeat_interval以内ならば、そのまま再生を再開します。 それ以外の場合、もう一度承認を行い、新しいauth_tokenを取得して、 新しいハートビートを開始します。
  • デスクトップアプリケーションがサスペンドされると、ハートビートを送信できなくなります。これにより、 アクティビティを再開する前に、auth_tokenが期限切れになる可能性が高くなります。

ハートビートを完全に停止するには、

  • デスクトップブラウザの場合、視聴者はページから離れる必要があります。
  • モバイルアプリケーションの場合、視聴者はアプリケーションを終了させる必要があります。

チャンネル変更に関して

チャンネルを変更する視聴者に対しては、プログラムが以前のauth_tokenを承認のために 渡すことができ、制限値のカウントが増えずに済みます。この場合、 視聴者が同時ストリーム数を加算することなくビデオを素早く切り替えることができます。

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