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 ストリーム用にアプリに統合するには、次の手順を完了します。 手順は次のとおりです。
DAI Pod Serving API にストリーム登録リクエストを送信する
ストリーム登録エンドポイントに POST リクエストを送信します。さらに、 マニフェスト操作に送信するストリーム ID を含む JSON レスポンス Pod Serving API エンドポイントを接続します。
API エンドポイント
POST: /ssai/pods/api/v1/network/{network_code}/custom_asset/{custom_asset}/stream
Host: dai.google.com
Content-Type: application/x-www-form-urlencoded
パスパラメータ
{network_code} |
Google アド マネージャー 360 のネットワーク コード |
{custom_asset} |
Google アド マネージャーでこのイベントに関連付けられたカスタム識別子。 |
フォーム エンコードされた本文パラメータ
フォーム エンコードの ターゲティング パラメータ のセット(省略可)。
レスポンス 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 \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "cust_params=\"section%3Dsports%26page%3Dgolf%2Ctennis\"" \
https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/ext-doc-ps-redirect-hls/stream
レスポンスの例
{
"stream_id":"9fe8fe4f-f12e-4fed-b509-0ca269bb1668:TUL",
"media_verification_url":"https://dai.google.com/.../media/",
"metadata_url":"https://dai.google.com/.../metadata",
"session_update_url":"https://dai.google.com/.../session",
"polling_frequency":10
}
エラーの場合、標準の 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
ストリームを再生
マニフェスト操作サーバーから受け取ったマニフェストを 開始して再生を開始します。
新しい AdBreak メタデータのポーリング
アプリケーションは広告ブレークごとにメタデータを取得するため、
どのインプレッションをトリガーするかが
わかっているためそのためには、
新しい広告がないか DAI API metadata_url
を定期的にポーリングするタイマー
情報です。ポーリングの間隔は polling_frequency
で指定します。
フィールドで確認できます。
戻り値として、次のパラメータを含む JSON オブジェクトを受け取ります。
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