Exoplayer

ExoPlayerのタイムライン・ウィンドウ・ピリオドを理解する

More than 1 year has passed since last update.

Timelineクラスのドキュメントの和訳です。

タイムラインとは、現在再生可能なメディアを表します。
タイムラインインスタンスは不変です。メディアが動的に変わる場合(ライブストリームなど)はタイムラインは現在利用可能なメディアのスナップショットを提供します。

タイムラインはTimeline.Periods(ピリオド)とTimeline.Windows(ウィンドウ)で構成されます。ピリオドは単一の論理的なメディアの断片を表します。たとえばメディアファイルなど。ウィンドウは一つか複数のピリオドにまたがり、シークが可能か等の追加の情報と共にピリオドの中の現在再生可能な領域を定義します。それぞれのウィンドウはデフォルト位置を定義します。これはプレイヤーがウィンドウの再生を開始する時の位置です。次に様々なユースケースのタイムラインを図示します。

単一のメディアファイルかオンデマンドストリーム

単一のメディアファイルの例

単一のメディアファイルかオンデマンドストリームのタイムラインは、単一のピリオドと単一のウィンドウで構成されます。ウィンドウはピリオド全体にまたがっていて、メディアの全ての部分が再生可能です。ウィンドウのデフォルト位置は通常ピリオドの先頭です(上図の黒い点)。

複数ファイルのプレイリストかオンデマンドストリーム

複数ファイルのプレイリストのタイムラインの例

複数のメディアファイルかオンデマンドストリームのプレイリストのタイムラインは、複数のピリオドで構成されていて、それぞれがウィンドウを持っています。それぞれのウィンドウは対応するピリオド全体にまたがっていて、通常はピリオドの先頭にデフォルト位置を持っています。ピリオドとウィンドウのプロパティ(それぞれの長さやシーク可能かどうか等)はしばしば対応するファイルかストリームをバッファリングし始める時に知ることができるようになります。

限定的に利用可能なライブストリーム

限定的に利用可能なライブストリームの例

ライブストリームのタイムラインは長さが不明のピリオドで構成されます。コンテンツが配信されるほど長くなっていきます。コンテンツが限定的な時間だけ利用可能である場合は、ウィンドウは0でない位置から始まり、まだ再生可能である領域を定義します。ウィンドウがライブストリームである場合、Timeline.Window.isDynamicはtrueになります。デフォルト位置は通常ライブエッジの近くになります(上図の黒い点)。

無限に利用可能なライブストリーム

無限に利用可能なライブストリームの例

無限に利用可能なライブストリームのタイムラインは、限定的に利用可能なライブストリームの場合と似ています。ウィンドウがピリオドの最初から始まっていて、全ての過去の配信コンテンツが再生可能であることだけが異なります。

複数ピリオドのライブストリーム

複数ピリオドのライブストリームの例

この場合はライブストリームが明示的に複数のピリオドに分かれている場合に発生します。たとえばコンテンツと広告など。限定的に利用可能なライブストリームの場合と似ていますが、ウィンドウが複数のピリオドにまたがる場合があるというところだけが異なります。無限に利用可能なライブストリームの場合でも複数のピリオドにすることが可能です。

オンデマンドのプリロールに続くライブストリーム

オンデマンドのプリロールに続くライブストリームの例

これは単一メディアファイルかオンデマンドストリームと複数ピリオドのライブストリームを結合した場合です。プリロールの再生が終わった後、ライブストリームの再生がライブエッジ付近のデフォルト位置から開始します。