APL Video



APL Video

ビデオプレイヤーでは、一つ、または複数の埋め込み動画が再生されます。APLの場合、埋め込み動画のプレイヤーでは操作はできません。その代わり、ビデオプレイヤーを操作するためのコントロールを作成するのに必要なイベントとコマンドが、プレイヤーに提供されます。ビデオプレイヤーの再生方法については、PlayMediaコマンドとControlMediaコマンドを参照してください。

このビデオプレイヤーには次の問題が確認されています。

  • outputSpeechとビデオを同時に再生する場合、ビデオのautoplayプロパティをtrueに設定すると、並列で再生されます。

サンプルビデオ

{
  "type": "Video",
  "source": URL,
  "autoplay": true
}

再生用インテント

音声ベースの再生操作に対応するには、 ビルトインインテントを実装する必要があります。

ビデオ再生後の音声入力を管理する

自分のスキルでビデオを再生し、その後、音声入力を受け入れる場合、onEndイベントハンドラーを使用し、SendEventコマンドを呼び出します。後に続くUserEventリクエストをスキルで処理する必要があります。音声入力を受け入れるには、shouldEndSessionfalseに設定してresponseを送信します。Alexaユーザーが入力を行えるように、応答には、適切なoutputSpeechオブジェクトとrepromptオブジェクトを含める必要があります。

プロパティ

VideoPlayerには、コンポーネントのプロパティに加えて、次のプロパティがあります。高さと幅のプロパティはそれぞれデフォルトで100dpに設定されています。

再生されるメディアはファイル1個のみです。ライブコンテンツには対応していません。

プロパティ 必須 スタイル設定 動的 説明
audioTrack foreground 再生するオーディオトラックです。デフォルトはforegroundです。  
autoplay ブール値 trueの場合、ビデオの再生が自動的に始まります。デフォルトはfalseです。
scale 以下のいずれかになります:best-fillまたはbest-fit ビデオのサイズ変更方法です。デフォルトはbest-fitです。
source(s) URLまたはSource配列 ビデオソースです。
onEnd コマンド配列 最後のビデオトラックの再生が終わったときに実行するコマンドです。
onPause コマンド配列 ビデオが再生から一時停止に切り替えられたときに実行するコマンドです。
onPlay コマンド配列 ビデオが一時停止から再生に切り替えられたときに実行するコマンドです。
onTrackUpdate コマンド配列 現在のビデオトラックが変更されるときに実行するコマンドです。

指定されない場合、Videoコンポーネントのheightwidthのデフォルトは100dpです。

セッションを開いたままで音声入力を受け取るようにするには、autoplaytrueに設定し、かつshouldEndSessionfalseに設定しないでください。ビデオの再生中、マイクがオンになってしまいます。ビデオ再生後の音声入力を管理するを参照してください。

source(s)

sourcesプロパティは、再生するビデオの配列です。複数のビデオが指定された場合、プレイヤーは各ビデオを順番に再生します。Videoコンポーネントのsourceプロパティと各ソースのurlプロパティは「配列化」のルールに従います。urlプロパティの場合、urlプロパティのあるオブジェクトのほかに、プレーンテキスト形式の文字列を単一URLとして受け取ることができます。そのため、sourceプロパティを設定する方法として以下はすべて有効となります。

"source": URL
"source": [ URL ]
"source": { "url": URL }
"source": [ { "url": URL } ]
"source": [ URL1, { "url": URL2 } ] } ]

メディアソースを指定する最も一般的な方法は、定義を完全に拡張することです。

"source": [
  {
    "description": "再生する最初のビデオクリップです",
    "offset": 150,   // 最初の150ミリ秒をスキップします
    "url": URL1,
  },
  {
    "description": "再生する2番目のビデオクリップです",
    "url": URL2,
    "repeatCount": -1    // 永久に繰り返します 
  },
  {
    "description": "このビデオは、コマンドからのみ操作できます",
    "url": URL3
  }
]

以下は最小限の定義ですが、前述の定義と同じです。

"source": [
  {
    "offset": 150,   // 最初の150ミリ秒をスキップします
    "url": URL1,
  },
  {
    "url": URL2,
    "repeatCount": -1    // 永久に繰り返します 
  },
  URL3
]

audioTrack

オーディオコンテンツを再生するオーディオトラックです。

説明
foreground フォアグラウンドトラックのオーディオが再生されます。Alexaと話すと、このメディアは一時停止します。これはデフォルトであり、他に選択肢はありません。

audioTrackforegroundに設定していると、すべてのメディアトラックが終わるまでPlayMediaコマンドは「完了」となりません。

Videoコンポーネントを使用するスキルでは、音声と画面上のボタンでビデオコンテンツを一時停止する方法を用意する必要があります。

autoPlay

trueに設定すると、ビデオは読み込まれた直後に再生を自動的に開始します。falseの場合、ビデオに明示的に開始を命令する必要があります。デフォルトはtrueです。

scale

Container内でのビデオのサイズを調整します。

名前 説明
best-fill 画面の端を切らずにContainerいっぱいに表示されるよう、ビデオのサイズが調整されます。ビデオとContainerのアスペクト比が異なる場合、ビデオの上下または左右の端が表示されなくなります。
best-fit Container内に収まるよう、ビデオのサイズが調整されます。ビデオとContainerのアスペクト比が異なる場合、黒帯状の画像がビデオの左右または上下の端に表示されます。

source

再生するビデオクリップまたはビデオクリップシーケンスを保持します。sourceプロパティはプレーンURLかソースデータ配列になります。

データ配列の場合、次のような構造になります。

プロパティ 必須 説明
description 文字列 このソースの任意の説明です。
duration 数値 再生時間です。設定しない場合、ストリーム全体が指定されます。ミリ秒で設定します。
url 1つ以上のURLまたはソースオブジェクトです。URLはいずれもhttps URLにする必要があります。 メディアソースの素材です
repeatCount 整数 ビデオをループさせる回数です。デフォルトは0です。
offset 数値 補正値を指定し、ストリームの中でその場所から再生を開始します。デフォルトは0です。

duration

メディアクリップの長さであり、ミリ秒で指定します。指定した再生時間が実際のメディアクリップより長い場合、再生時間が増えることはありません。durationがゼロ以下の場合、そのメディアクリップはスキップされ、再生されません。

url

メディアソースのURLです。https URLにする必要があります。MPEG4かH.264コーデック形式に対応しています。

repeatCount

このメディアの再生を繰り返す回数です。デフォルトは0です。つまり、一回通して再生したら停止となります。-1に設定した場合、ビデオは永久に繰り返されます。

offset

メディアの開始点からのoffsetであり、この場所から再生を開始します。ミリ秒で指定します。デフォルトは0です。つまり、メディアの開始点から再生が始まります。ビデオのrepeatCount値が正の場合、毎回同じ補正値でメディアが再生されます。

ハンドラー

次のハンドラーが説明のとおり呼び出されます。

onEnd

onEndハンドラーは、ビデオシーケンスの最後のビデオで繰り返しが終わり、再生が完了となったときに呼び出されます。onEndハンドラーは複数回呼び出すことができます。たとえば、あるビデオを最後まで再生して停止し、シークコマンドを受け取って前のポイントまで早戻しし、再生コマンドを受け取って最後まで再生して停止することができます。

生成されるイベントの形式は次のようになります。

"event": {
  "source": {
    "source": "Video",
    "handler": "End",
    "id": ID,          // VideoコンポーネントのID
    "value": null      // 何の報告されません
  },
  "trackIndex": Integer,    // trackCount - 1と等しくなります。
  "trackCount": Integer,
  "currentTime": Integer,   // durationと等しいか、それ以上になります
  "duration": Integer,
  "paused": true,
  "ended": true
}

onPause

onPauseハンドラーは、ビデオ再生が再生から一時停止に意図的に切り替えられたときに呼び出されます。最後のビデオの終わりに到達したとき、再生を停止するコマンドがビデオプレイヤーに渡されたとき、同期的ビデオ再生が中断されたときなどに発生します。ビデオコンテンツをダウンロードするためにビデオプレイヤーで再生を一時停止しなければならない場合、onPauseハンドラーは呼び出されません。

生成されるイベントの形式は次のようになります。

"event": {
  "source": {
    "source": "Video",
    "handler": "Pause",
    "id": ID,          // VideoコンポーネントのID
    "value": null      // 何の報告されません
  },
  "trackIndex": Integer,
  "trackCount": Integer,
  "currentTime": Integer,
  "duration": Integer,
  "paused": true,
  "ended": BOOLEAN
}

onPlay

onPlayハンドラーは、ビデオ再生が一時停止から再生に切り替えられるたびに呼び出されます。autoplaytrueに設定されたビデオ、PlayMediaコマンド、再生コマンドなどによって発生します。

生成されるイベントの形式は次のようになります。

"event": {
  "source": {
    "source": "Video",
    "handler": "Play",
    "id": ID,          // VideoコンポーネントのID
    "value": null      // 何の報告されません
  },
  "trackIndex": Integer,
  "trackCount": Integer,
  "currentTime": Integer,
  "duration": Integer,
  "paused": false,
  "ended": BOOLEAN
}

onTrackUpdate

onTrackHandlerハンドラーは、別のビデオトラックがアクティブになったときに呼び出されます。通常のビデオシーケンスとしてプレイヤーが次のビデオトラックに進むとき、プレイヤーにコマンドが渡されたときなどに発生します。

生成されるイベントの形式は次のようになります。

"event": {
  "source": {
    "source": "Video",
    "handler": "Play",
    "id": ID,          // VideoコンポーネントのID
    "value": trackIndex    // 下のtrackIndexフィールドに等しい
  },
  "trackIndex": Integer,
  "trackCount": Integer,
  "currentTime": Integer,
  "duration": Integer,
  "paused": BOOLEAN,
  "ended": BOOLEAN
}