Google DAI Pod Serving API を使用すると、サーバーサイドの広告挿入、 動画の合成はご自身で管理できます。
このガイドでは、Pod Serving API を操作する方法と、 同様の機能を IMA DAI SDK と併用できます特定の Google Cloud サービスの Google アカウント マネージャーにお問い合わせください。
Pod Serving API は、HLS または MPEG-DASH 形式の連続配信ストリームに対応しています。 使用できます。このガイドでは、HLS ストリームに焦点を当て、 HLS と MPEG-DASH の違いを解説します。
Pod Serving API を VOD ストリーム用にアプリに統合するには、次の手順を完了します。 手順は次のとおりです。
アド マネージャーにストリーム登録をリクエストする
ストリーム登録エンドポイントに POST リクエストを送信します。さらに、 マニフェスト操作に送信するストリーム ID を含む JSON レスポンス Pod Serving API エンドポイントを接続します。
API エンドポイント
POST: /ondemand/pods/api/v1/network/{network_code}/stream_registration
Host: dai.google.com
Content-Type: application/json
パスパラメータ
{network_code} |
Google アド マネージャー 360 のネットワーク コード |
JSON 本文パラメータ
targeting_parameters |
コンテンツ ソース ID(cmsid)、動画 ID(vid)、 広告のターゲット設定 パラメータ。必須 |
レスポンス JSON
media_verification_url |
再生トラッキング イベントを ping するためのベース URL。完全なメディア検証 URL は、このベース URL に広告イベント ID を付加して作成されます。 |
metadata_url |
連続配信広告のメタデータをリクエストするための URL。 |
stream_id |
現在のストリーム セッションを識別するために使用される文字列。 |
valid_for |
現在のライブ配信セッションが期限切れになるまでの残り時間(単位)
dhms (日、時間、分、秒)の形式になります。たとえば
2h0m0.000s は 2 時間を表します。
|
valid_until |
現在のストリーム セッションの有効期限が切れる時刻(ISO 8601 形式)
yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm の日時文字列
使用できます。
|
リクエストの例(cURL)
curl -X POST \
-d '{"targeting_parameters":{"cmsid":"12345","vid":"sample-video"}}' \
-H 'Content-Type: application/json' \
https://dai.google.com/ondemand/pods/api/v1/network/21775744923/stream_registration
レスポンスの例
{
"media_verification_url": "https://dai.google.com/.../media/",
"metadata_url": "https://dai.google.com/.../metadata",
"stream_id": "6e69425c-0ac5-43ef-b070-c5143ba68541:CHS",
"valid_for": "8h0m0s",
"valid_until": "2023-03-24T08:30:26.839717986-07:00"
}
エラーの場合、標準の HTTP エラーコードが返され、JSON レスポンスは返されない できます。
JSON レスポンスを解析し、関連する値を保存します。
マニフェスト マニピュレータからストリーム マニフェストをリクエストする
マニフェスト マニピュレータごとに、リクエスト形式とレスポンス形式が異なります。問い合わせ先 マニピュレータプロバイダに問い合わせて 具体的な要件を確認してくださいもし 独自のマニフェスト マニピュレータを実装する方法については、マニフェスト マニピュレータの ガイドを参照し、 適用できます。
通常は、システム コンポーネントによって返されたストリーム ID を 上記の登録エンドポイントをマニフェスト マニピュレータに追加して、 作成することもできます。マニフェストで明示されている場合を除きます。 マニフェスト リクエストに対するレスポンスは、 両方が必要です
リクエストの例(cURL)
curl https://{manifest_manipulator}/video/1331997/stream/6e69425c-0ac5-43ef-b070-c5143ba68541:CHS/vod_manifest.m3u8
レスポンスの例(HLS)
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="abcd1234_ subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
abcd1234_video-1080p.m3u8
ストリームを再生
マニフェスト操作サーバーから受け取ったマニフェストを 開始して再生を開始します。
アド マネージャーから連続配信広告のメタデータをリクエストする
ステップ 1 で受け取った metadata_url
に GET
リクエストを送信します。この
ステップは、マニフェストから合成されたマニフェストを受信した後に実行する必要があります
使用します。代わりに、次の内容を含む JSON オブジェクトを受け取ります。
parameters:
tags |
ページに表示されるすべての広告イベントを含む Key-Value ペアのセット
。キーは、広告イベントの最初の 17 文字または
ストリームの時間指定メタデータに表示される ID、またはイベントの場合に返される ID
タイプ progress (完全な広告イベント ID)。
各値は、次のパラメータを含むオブジェクトです。
|
||||||||||||||||||
ads |
ストリーム内に表示されるすべての広告を表す一連の Key-Value ペア。「
キーは、tags オブジェクト内の値と一致する広告 ID です。
使用できます。各値は、次のパラメータを含むオブジェクトです。
|
||||||||||||||||||
ad_breaks |
ストリーム内に表示されるすべてのミッドロール挿入点を表す Key-Value ペアのセット。
キーは、tags にある値と一致する広告ブレーク ID です。
および上記の ads オブジェクトを使用します。各値は 1 つのオブジェクトで
次のパラメータを含む:
|
これらの値を保存して、動画内の時間指定のメタデータ イベントに関連付けます。 。
リクエストの例(cURL)
curl https://dai.google.com/.../metadata
レスポンスの例
{
"tags":{
"google_5555555555":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"firstquartile"
},
"google_1234567890123456789":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"progress"
},
...
},
"ads":{
"0000229834_ad1":{
"ad_break_id":"0000229834",
"position":1,
"duration":15,
"clickthrough_url":"https://.../",
...
},
...
},
"ad_breaks":{
"0000229834":{
"type":"mid",
"duration":15,
"ads":1
},
...
}
}
広告イベントをリッスンする
音声/動画ストリームでトリガーされた広告イベントを通じて、時間指定のメタデータをリッスンする 追加できます
MPEG-TS ストリームの場合、メタデータは帯域内 ID3 v2.3 タグとして表示されます。各
メタデータタグの ID は TXXX
で、値は文字列 google_
で始まります。
その後に文字が続きます。この値は広告イベント ID です。
TXXX
の XXX
はプレースホルダではありません。文字列 TXXX
は、ID3 タグ ID です。
使用します。
ID3 タグの例
TXXXgoogle_1234567890123456789
MP4 ストリームの場合、これらは ID3 v2.3 をエミュレートするインバンド emsg イベントとして送信されます。
できます。関連する各 emsg ボックスの scheme_id_uri
値は次のいずれかです。
https://aomedia.org/emsg/ID3
または
https://developer.apple.com/streaming/emsg-id3
と message_data
値
先頭が ID3TXXXgoogle_
になります。この message_data
値。
ID3TXXX
接頭辞は、広告イベント ID です。
emsg ボックスの例
データ構造は、メディア プレーヤーのライブラリによって異なる場合があります。
広告イベント ID が google_1234567890123456789
の場合、レスポンスは次のようになります。
これを次のように使用します。
{
"scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3",
"presentation_time": 27554,
"timescale": 1000,
"message_data": "ID3TXXXgoogle_1234567890123456789",
...
}
一部のメディア プレーヤー ライブラリは、ID3 をエミュレートする emsg イベントを自動的に提示する ネイティブ ID3 タグとして使用しますこの場合、MP4 ストリームは同一の ID3 タグを持ちます。 MPEG_TS です。
クライアント動画プレーヤー アプリの UI を更新する
各広告イベント ID は、ステップ 4 の tags
オブジェクトのキーと一致する可能性があります。
これらの値の照合は、次の 2 段階のプロセスで行われます。
tags
オブジェクトで、完全な広告イベント ID に一致するキーを確認します。条件 一致が見つかった場合は、イベントタイプとそれに関連付けられたad
を取得します。ad_break
オブジェクト。これらのイベントのタイプはprogress
にする必要があります。完全な広告イベント ID に一致するものが見つからない場合は、
tags
を確認してください 広告イベント ID の最初の 17 文字に一致するキーのオブジェクトです。 イベントタイプと、関連するad
オブジェクトとad_break
オブジェクトを取得します。 これにより、progress
以外のタイプのイベントがすべて取得されます。この取得した情報を使用して、プレーヤーの UI を更新します。たとえば
start
または最初のprogress
イベントを受け取った場合、プレーヤーのシークを非表示にします 現在の広告の位置を示すオーバーレイを ミッドロール挿入点(「広告 1/3」など)。
広告イベント ID の例
google_1234567890123456789 // Progress event ID
google_5555555555123456789 // First Quartile event ID
タグ オブジェクトの例
{
"google_5555555555":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"firstquartile"
},
"google_1234567890123456789":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"progress"
},
...
}
メディアの確認 ping を送信する
メディアの確認 ping は、広告イベントが発生するたびにアド マネージャーに送信する必要がある
progress
以外のタイプのデータを受信した場合。
広告イベントの完全なメディア確認用 URL を生成するには、
広告イベント ID をストリーム登録の media_verification_url
値に設定
レスポンスが返されます。
完全な URL で GET リクエストを行う。オーナー確認のリクエストが
成功すると、ステータス コード 202
の HTTP レスポンスが返されます。
それ以外の場合は、HTTP エラーコード 404
が返されます。
リクエストの例(cURL)
curl https://{...}/media/google_5555555555123456789
正常なレスポンスの例
HTTP/1.1 202 Accepted