クロスデバイスレジュームのためのプレイヤーを読み込む

Ooyalaはあるデバイスで再生を開始したビデオを、別のデバイスにて再開することのできる 機能をサポートします。クロスデバイスレジューム体験を完全に享受するには、以下を実行する必要があります。
  1. 特定のプロバイダーアカウントのプレイヤーを読み込む (アカウントがユニークな識別子を持っている 必要があります)。これにより、クロスデバイスレジュームサーバーに最後の再生時の位置を保存します。
  2. 特定のプロバイダーアカウントのプレイヤーを読み込むと、視聴者がすでに動画を部分的に 視聴しているかを確認します。そうであれば、プログラム側で適切な位置まで シークまたは早送りする必要があります。

このAPIはRESTベースで、リクエスト署名の一般的なアルゴリズムで説明されている通り、リクエストはすべて署名されている必要があります。

プレイヤーライブラリの読み込み

いつもどおり、プレイヤーV3ライブラリを読み込みます。プレイヤーをオプションハッシュで作成する場合、アカウントIDを含むembedトークンを渡す必要があります。 例:

<script src="http://player.ooyala.com/v3/PLAYER_BRANDING_ID"></script>
      

参考例:特定ユーザーのためにプレイヤーを読み込む

次のコードは、 Aliceという一般的なユーザーのためのプレイヤーの読み込み方法を説明しています。Aliceの アセット内の位置をクロスデバイスレジュームサーバーに保存します。
注: generate_signature関数に関する 詳細は、リクエスト署名の一般的なアルゴリズムをご覧ください。
 
OO.Player.create('playerwrapper','<%= params[:embed_code] %>', {
  embedToken: "<%= signed_embed_code_url %>"
});


`signed_embed_code_url` is the following url that is generated server side. The sample code is in ruby but obviously doesn't have to be. It signs the url for account id "Alice"

  a
  uri = URI.parse("http://player.ooyala.com/sas/embed_token/#{pcode}/" +
             "#{embed_code}?"
                  "account_id=#{account_id}&" +
                  "api_key=#{api_key}&" +
                  "expires=#{Time.now.to_i + 60 * 60 * 24}")
  params_hash = {}
  uri.query.split("&").map { |pair| pair.split("=", 2) }.each do |key,value|
    params_hash[CGI.unescape(key).to_sym] = (value && CGI.unescape(value)) if (key && !key.empty? && value)
  end
  signature = generate_signature(secret, "GET", uri.path, params_hash,

"", [])
  return "#{uri.to_s}&signature=#{CGI.escape(signature)}"

再生位置の取得

再生位置を取得する方法は2種類あります。
  • 指定されたユーザーの特定のアセットの場合
  • 指定されたユーザーのすべてのアセットの場合
注: このセクションの構文では、account_idはお客様のエンドユーザーを表す ために使用する識別子を意味します。Ooyala APIで使用するaccount_idはお使いのシステム内でユニークで ある必要があります。プライバシー保護のために、Ooyalaではaccount_idをユーザーの個人情報と 結び付けないことを推奨します。たとえば、account_idがメールアドレスの場合、base64を 使用することをお勧めします。

指定されたユーザーの特定のアセットの再生位置を取得するには、

[GET] http://api.ooyala.com/v2/cross_device_resume/accounts/account_id/viewed_assets/embed_code(identifier for the asset)/playhead_info

レスポンス:

{
    playhead_seconds: <position in seconds>,
    timestamp: <when the play event was received>
  }   

特定ユーザーが視聴したすべてアセットの再生位置を取得するには、

[GET] http://api.ooyala.com/v2/cross_device_resume/accounts/account_id/playhead_info?limit=max_number_results&start_date=yyyy-mm-dd

limitパラメータは任意です。返ってくる結果の最大数を指定します。start_dateパラメータも任意です。再生位置を返すにあたり、どれだけ以前の結果を返すかを絞り込むための最も以前の日付を指定します (終了日は常にAPIが呼び出された時、または現在時刻になります)。

レスポンス:

{
  "items": [
    {
      "playhead_seconds": <position in seconds>,
      "timestamp": <when the play event was recieved>,
      "embed_code": <embed code>
    }
  ],
  "account": <account_id>
}

正しい再生位置を探す

異なるデバイス(または同じデバイス)間でのシームレスなやりとりを実現するために、正しい再生位置を探すためのスクリプトを追加する必要があります。 プレイヤーV3のinitialTimeオプションを使用するのが最適解と言えるかもしれません アセット内の特定位置への移動方法に関しては、プレイヤーAPIドキュメントをご覧ください。プレイヤーV3ドキュメントはこちらにございます。
[GET] http://api.ooyala.com/v2/cross_device_resume/accounts/account_id/viewed_assets/embed_code/playhead_info

レスポンス:

{
    playhead_seconds: <position in seconds>,
    timestamp: <when the play was event received>
  }  

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