タイムライン 1 - コンテンツの最後まで視聴

VOD、プリロール広告、一時停止、バッファリング、コンテンツの最後まで視聴

次の図に、再生ヘッドタイムラインおよびユーザーのアクションに対応するタイムラインを示します。各アクションおよびそれに伴うリクエストを次に示します。

アクションの詳細

アクション 1 - セッションの開始

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
自動再生または再生ボタンが押され、ビデオの読み込みが開始される。 0 0 /api/v1/sessions

実装の詳細

この呼び出しは、ビデオを​再生しようとするユーザーの意図​を示します。

セッション内の後続のすべてのトラッキングコールを識別するために使用されるセッション ID({sid})がクライアントに返されます。プレーヤーの状態はまだ「再生中」ではなく、「開始中」です。

必須のセッションパラメーターをリクエスト本文の params マップに含める必要があります。

バックエンドでは、この呼び出しによって Adobe Analytics の開始呼び出しが生成されます。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 0, ts: <timestamp>
    },
    eventType:sessionStart, params: {
        "media.playerName": "sample-html5-api-player",
        "analytics.trackingServer": "[ _YOUR_TS_ ]",
        "analytics.reportSuite": "[ _YOUR_RSID_ ]",
        "analytics.visitorId": "[ _YOUR_VISITOR_ID_ ]",
        "media.contentType": "VOD",
        "media.length": 60.3333333333333,
        "media.id": "VA API Sample Player",
        "visitor.marketingCloudOrgId": "[YOUR_MCID]",
        "media.name": "ClickMe",
        "media.channel": "sample-channel",
        "media.sdkVersion": "va-api-0.0.0",
        "analytics.enableSSL": false
    }
}

アクション 2 - ping タイマー開始

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
アプリ開始 ping イベントタイマー 0 0 /api/v1/sessions/{sid}/events

実装の詳細

アプリの ping タイマーを開始します。最初の ping イベントは、プリロール広告がある場合は 1 秒、その他の場合は 10 秒で発生させる必要があります。

アクション 3 - 広告ブレーク開始

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
プリロール広告ブレークの開始を追跡する 0 0 /api/v1/sessions/{sid}/events

実装の詳細

広告は、広告ブレーク内でのみ追跡できます。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 0,
        ts: <timestamp>
    },
    eventType:adBreakStart, params: {
        "media.ad.podFriendlyName": "ad_pod1",
        "media.ad.podIndex": 0,
        "media.ad.podSecond": 0
    }
}

アクション 4 - 広告開始

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
プリロール広告 #1 の開始を追跡する 0 0 /api/v1/sessions/{sid}/events

実装の詳細

長さが 15 秒の最初のプリロール広告の追跡を開始します。この adStart を使用してカスタムメタデータを含めます。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 0,
        ts: &lt;timestamp&gt;
    },
    eventType:adStart,
    params: {
        "media.ad.podFriendlyName": "ad_pod1",
        "media.ad.name": "Ad 1",
        "media.ad.id": "001",
        "media.ad.length": 15,
        "media.ad.podPosition": 1,
        "media.ad.playerName": "Sample Player",
        "media.ad.advertiser": "Ad Guys",
        "media.ad.campaignId": "1",
        "media.ad.creativeId": "42",
        "media.ad.siteId": "XYZ",
        "media.ad.creativeURL": "https://xyz_creative.com",
        "media.ad.placementId": "sample_placement"
    },
    customMetadata: {
        "myCustomData1": "CustomData1",
        "myCustomData2": "CustomData2"
    }
}

アクション 5 - 広告 ping

アクション 5.1 - 広告 ping 1

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
アプリが ping イベントを送信する 1 0 /api/v1/sessions/{sid}/events

実装の詳細

広告内にある間、バックエンドに対する ping を 1 秒ごとに実行します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 0,
        ts: <timestamp>
    },
    eventType:ping
}

アクション 5.2 - 広告 ping 2

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
アプリが ping イベントを送信する 2 0 /api/v1/sessions/{sid}/events

実装の詳細

広告内にある間、バックエンドに対する ping を 1 秒ごとに実行します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 0,
        ts: <timestamp>
    },
    eventType:ping
}

アクション 5.3 - 広告 ping 3

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
アプリが ping イベントを送信する 3 0 /api/v1/sessions/{sid}/events

実装の詳細

広告内にある間、バックエンドに対する ping を 1 秒ごとに実行します。

メモ

簡略にするために、タイムラインの後続の広告では、一連の 1 秒の ping を示すのを省略します。
簡潔性を重視する場合

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 0,
        ts: <timestamp>
    },
    eventType:ping
}

アクション 6 - 広告完了

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
プリロール広告 #1 の完了を追跡する 15 0 /api/v1/sessions/{sid}/events

実装の詳細

最初のプリロール広告の終わりを追跡します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 0,
        ts: <timestamp>
    },
    eventType:adComplete
}

アクション 7 - 広告開始

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
プリロール広告 #2 の開始を追跡する 15 0 /api/v1/sessions/{sid}/events

実装の詳細

長さが 7 秒の 2 番目のプリロール広告の開始を追跡します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 0,
        ts: <timestamp>
    },
    eventType:adStart, params: {
        "media.ad.podFriendlyName": "ad_pod1",
        "media.ad.name": "Ad 2",
        "media.ad.id": "002",
        "media.ad.length": 7,
        "media.ad.podPosition": 1,
        "media.ad.playerName": "Sample Player",
        "media.ad.advertiser": "Ad Guys",
        "media.ad.campaignId": "2",
        "media.ad.creativeId": "44",
        "media.ad.siteId": "XYZ",
        "media.ad.creativeURL": "https://xyz_creative.com",
        "media.ad.placementId": "sample_placement2"
    },
}

アクション 8 - 広告 ping

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
アプリが ping イベントを送信する 20 0 /api/v1/sessions/{sid}/events

実装の詳細

バックエンドに対する ping を 1 秒ごとに実行します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 0,
        ts: <timestamp>
    },
    eventType:ping
}

アクション 9 - 広告完了

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
プリロール広告 #2 の完了を追跡する 22 0 /api/v1/sessions/{sid}/events

実装の詳細

2 番目のプリロール広告の終わりを追跡します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 0,
        ts: <timestamp>
    },
    eventType:adComplete
}

アクション 10 - 広告ブレーク完了

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
プリロール広告ブレークの完了を追跡する 22 0 /api/v1/sessions/{sid}/events

実装の詳細

広告ブレークが終了します。広告ブレーク中、再生状態は「再生中」のままになります。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 0,
        ts: <timestamp>
    },
    eventType:adBreakComplete
}

アクション 11 - コンテンツの再生

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
再生イベントを追跡する 22 0 /api/v1/sessions/{sid}/events

実装の詳細

adBreakComplete イベントの後、play イベントを使用してプレーヤーを「再生中」状態にします。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 0,
        ts: <timestamp>
    },
    eventType:play
}

アクション 12 - ping

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
アプリが ping イベントを送信する 30 8 /api/v1/sessions/{sid}/events

実装の詳細

バックエンドに対する ping を 10 秒ごとに実行します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 8,
        ts: <timestamp>
    },
    eventType:ping
}

アクション 13 - バッファー開始

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
バッファー開始イベントが発生した 33 11 /api/v1/sessions/{sid}/events

実装の詳細

プレーヤーの「バッファリング」状態への移行を追跡します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 11,
        ts: <timestamp>
    }, eventType:bufferStart
}

アクション 14 - バッファー終了

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
バッファリングが終了し、アプリがコンテンツの再開を追跡する 36 11 /api/v1/sessions/{sid}/events

実装の詳細

バッファリングが 3 秒後に終了するので、プレーヤーを「再生中」状態に戻します。バッファリングが終了したら再生イベントの追跡をもう 1 件送信する必要があります。bufferStartの後のplay呼び出しがバックエンドへの「bufferEnd」呼び出しと解釈されるので、 bufferEnd イベントは必要ありません。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 11,
        ts: <timestamp>
    },
    eventType:play
}

アクション 15 - ping

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
アプリが ping イベントを送信する 40 15 /api/v1/sessions/{sid}/events

実装の詳細

バックエンドに対する ping を 10 秒ごとに実行します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 15,
        ts: <timestamp>
    }, eventType:ping
}

アクション 16 - 広告ブレーク開始

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
ミッドロール広告ブレークの開始を追跡する 46 21 /api/v1/sessions/{sid}/events

実装の詳細

期間が 8 秒のミッドロール広告。adBreakStart を送信します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 21,
        ts: <timestamp>
    },
    eventType:adBreakStart,
    params: {
        "media.ad.podFriendlyName": "ad_pod2",
        "media.ad.podIndex": 1,
        "media.ad.podSecond": 21
    }
}

アクション 17 - 広告開始

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
ミッドロール広告 #3 の開始を追跡する 46 21 /api/v1/sessions/{sid}/events

実装の詳細

ミッドロール広告を追跡します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 21,
        ts: <timestamp>
    },
    eventType:adStart, params: {
        "media.ad.podFriendlyName": "ad_pod2",
        "media.ad.name": "Ad 3",
        "media.ad.id": "003",
        "media.ad.length": 8,
        "media.ad.podPosition": 2,
        "media.ad.playerName": "Sample Player",
        "media.ad.advertiser": "Ad Guys",
        "media.ad.campaignId": "7",
        "media.ad.creativeId": "40",
        "media.ad.siteId": "XYZ",
        "media.ad.creativeURL": "https://xyz_creative.com",
        "media.ad.placementId": "sample_placement2"
    },
}

アクション 18 - 広告 ping

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
アプリが ping イベントを送信する 50 21 /api/v1/sessions/{sid}/events

実装の詳細

バックエンドに対する ping を 10 秒ごとに実行します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 21,
        ts: <timestamp>
    }, eventType:ping
}

アクション 19 - 広告完了

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
ミッドロール広告 #1 の完了を追跡する 54 21 /api/v1/sessions/{sid}/events

実装の詳細

ミッドロール広告が完了します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 21,
        ts: <timestamp>
    },
    eventType:adComplete
}

アクション 20 - 広告ブレーク完了

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
ミッドロール広告ブレークの完了を追跡する 54 21 /api/v1/sessions/{sid}/events

実装の詳細

広告ブレークが完了します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 21,
        ts: <timestamp>
    },
    eventType:adBreakComplete
}

アクション 21 - ping

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
アプリが ping イベントを送信する 60 27 /api/v1/sessions/{sid}/events

実装の詳細

バックエンドに対する ping を 10 秒ごとに実行します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 27,
        ts: <timestamp>
    },
    eventType:ping
}

アクション 22 - 一時停止

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
ユーザーが一時停止を押した 64 31 /api/v1/sessions/{sid}/events

実装の詳細

ユーザーのアクションにより、再生状態が「一時停止」に移行します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 31,
        ts: <timestamp>
    },
    eventType:pauseStart
}

アクション 23 - ping

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
アプリが ping イベントを送信する 70 31 /api/v1/sessions/{sid}/events

実装の詳細

バックエンドに対する ping を 10 秒ごとに実行します。プレーヤーはまだ「バッファリング」状態になっています。ユーザーは、コンテンツの 20 秒時点で停止しています。待機中…

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 31,
        ts: <timestamp>
    }, eventType:ping
}

アクション 24 - 再生

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
ユーザーが再生を押してメインコンテンツを再開する 74 31 /api/v1/sessions/{sid}/events

実装の詳細

再生状態を「再生中」に移行します。pauseStartの後のplay呼び出しがバックエンドへの「resume」呼び出しと解釈されるのでresume イベントは必要ありません。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 31,
        ts: <timestamp>
    }, eventType:play
}

アクション 25 - ping

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
アプリが ping イベントを送信する 80 37 /api/v1/sessions/{sid}/events

実装の詳細

バックエンドに対する ping を 10 秒ごとに実行します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 37,
        ts: <timestamp>
    }, eventType:ping
}

アクション 26 - セッション完了

アクション アクションのタイムライン(秒) 再生ヘッドの位置(秒) クライアントリクエスト
ユーザーがコンテンツを最後まで視聴する 88 45 /api/v1/sessions/{sid}/events

実装の詳細

sessionComplete をバックエンドに送信して、ユーザーがコンテンツ全体の視聴を終了したことを示します。

リクエスト本文のサンプル

{
    playerTime: {
        playhead: 45,
        ts: <timestamp>
    }, eventType:sessionComplete
}
メモ

シークイベントがない- メディアコレクション API では、seekStart および seekComplete イベントの明示的なサポートはありません。これは、特定のプレーヤーではエンドユーザーがスクラビングすると、これらのイベントが大量に生成され、数百人のユーザーであってもバックエンドサービスのネットワーク帯域幅のボトルネックになり得るからです。アドビでは、再生ヘッドの位置ではなく、デバイスのタイムスタンプに基づいてハートビート期間を計算することで、シークイベントの明示的なサポートの代わりとしています。

このページ