広告ストリームのブックマークを保存、読み込む

このガイドでは、ビデオ オンデマンド(VOD)ストリームにダイナミック広告挿入(DAI)を使用する場合に、IMA DAI SDK を使用してブックマークを実装する方法について説明します。これは、スタートガイドで説明されているような、動作する IMA DAI 実装があることを前提としています。

ブックマークとは

ブックマークは、コンテンツ ストリームのあるポイントを保存し、後でそこから再生する機能です。たとえば、ユーザーが 5 分間のコンテンツを見ているとします。動画ストリーム中に視聴を中断して、後で中断したところから再生を再開できます。ブックマークはユーザーが見ていた場所を保存するので、中断したところに戻ってスムーズに視聴を続けられます。

DAI ブックマークの仕組み

DAI ストリームをブックマークする場合は、ストリーム ID と、ユーザーが動画を離れた時刻を記録する必要があります。ユーザーが戻ってきたら、ストリーミングを再リクエストし、保存した時間にシークします。リクエストされたストリームの各インスタンスに異なる長さのミッドロール挿入点が存在する可能性があるため、ストリーム時間を保存するだけでは対応できません。同じコンテンツの時間から続行したい場合。

コンバージョン メソッドの活用

IMA DAI SDK には、特定のストリーム時間コンテンツ時間と、特定のコンテンツ時間ストリーム時間をリクエストする一対のメソッドが用意されています。これらの変換方法を使用すると、ブックマークしたコンテンツの時間を保存し、ストリームの新しいインスタンスで対応するストリームの時間にシークできます。以下に、ブックマークの実装を示すサンプルアプリへのリンクを含め、アプローチを示します。

広告ストリームのブックマークを保存、読み込む

コンテンツ プレーヤーが一時停止されたときにブックマークを保存します。

onPause() {
   var bookmarkTime = Math.floor(
   streamManager.contentTimeForStreamTime(videoElement.currentTime));
}

ブックマークを読み込んでいます

ストリームを再リクエストするときにブックマークを読み込む。

function loadUrl(url) {
  hls.on(Hls.Events.MANIFEST_PARSED, () => {
    var startTime = 0;
    if (bookmarkTime) {
      var startTime = streamManager.streamTimeForContentTime(bookmarkTime);
      // Seeking on load triggers the onSeekEnd event, so treat this seek as
      // if it's snapback. Without this, resuming at a bookmark kicks you
      // back to the ad before the bookmark.
      isSnapback = true;
    }
    hls.startLoad(startTime);
    videoElement.addEventListener('loadedmetadata', () => { videoElement.play(); });
  });
  hls.loadSource(url);
  hls.attachMedia(videoElement);
}

サンプルアプリ

サンプルアプリをダウンロードして、ブックマークの実装を確認します。