开始使用适用于直播的 SGAI

服务器引导的广告插播 (SGAI) 提供可在客户端设备上拼接的广告连播清单。如果您已在 Google Ad Manager 广告资源网中启用插播广告 DAI,则可以开始使用 SGAI。如果您未启用 Pod Serving DAI,请与您的客户经理联系。

借助 SGAI,您可以使用 Pod 服务 API 端点创建用于检索广告元数据和广告连播清单的流。

如果您有清单操纵服务器,则可以根据您的首选规范生成广告连播清单网址,并在内容流中插入包含广告连播清单信息的广告标记。

或者,您也可以使用流清单中广告标记以外的其他机制来安排广告插播时间点。在这些情况下,您的应用可以监听其他事件,例如用户与直播、应用本身或推送通知的互动。在这些事件发生后,应用可以生成广告连播清单网址,并告知播放器开始加载广告连播清单。

前提条件

在继续操作之前,请务必做好以下准备:

  • 您的 Google Ad Manager 广告资源网已启用 DAI Pod 投放。
  • 类型为广告连播投放清单的直播活动。如需创建活动,请参阅设置 DAI 直播

遵循建议

生成广告连播清单网址之前,建议您调用广告插播时间点提前通知 (EABN) API,以指定每个广告插播时间点的预期时长、定位信息和其他参数。

对于生产和测试信息流,请调用 EABN API,尤其是在您的广告资源网有任何程序化广告系列的情况下。如需了解详情,请参阅程序化直接交易的功能和指南

发出流注册请求

当用户在您的视频播放器应用中开始播放内容流时,您会发送包含定位参数的视频流注册请求,以便在 Ad Manager 中创建视频流会话。如需详细了解如何发出数据流注册请求,请参阅方法:stream。 之后,您会收到来自请求的响应数据

以下示例会发出流注册请求:

纯文本 HTTP

  • 请求:
authority: dai.google.com
method: POST
path: /ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream
scheme: https
content-type: application/x-www-form-urlencoded

cust_params=customID%253D1543216789%2526anotherKey%253Dvalue1%252Cvalue2
  • 回答:
{
    "manifest_format": "hls",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "polling_frequency": 10,
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL"
}

Shell

  • 命令行:
curl \
-H "Host: dai.google.com" \
-H "content-type: application/x-www-form-urlencoded" \
  --data-binary "cust_params=channelID%253D1543216789%2526anotherKey%253Dvalue1%252Cvalue2" \
  --compressed "https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream"
  • 输出:
{
    "manifest_format": "hls",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "pod_manifest_url": "https://dai.google.com/linear/pods/v1/hls/event/TFyZF0IoSpqvCLtLv8JdCw/pod/$pod-id$.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db%3ATUL",
    "polling_frequency": 10,
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL"
}

JavaScript

  • 使用 Fetch API:
const response = await fetch("https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream", {
  "headers": {
    "content-type": "application/x-www-form-urlencoded",
  },
  "body": "cust_params=channelID%3D1543216789%26anotherKey%3Dvalue1%2Cvalue2",
  "method": "POST",
});

  const stream = await response.json();
  console.log(stream);
  • 控制台日志:
{
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "polling_frequency": 10,
    "pod_manifest_url": "https://dai.google.com/linear/pods/v1/hls/event/TFyZF0IoSpqvCLtLv8JdCw/pod/$pod-id$.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db%3ATUL",
    "manifest_format": "hls"
}

轮询广告插播时间点元数据

在发出流注册请求后,轮询广告元数据。如需轮询,您可以在注册步骤中使用流响应中的 polling_frequence 设置计时器,以调用广告元数据。对于每次轮询,您可能会收到部分广告列表,其中包含元数据(如有)。

生成广告连播清单网址

为 Pod Serving API 的 pod 资源构建网址。然后,将该网址传递给视频播放器,以开始加载广告连播。

以下示例展示了广告连播清单网址的结构:

https://dai.google.com/linear/pods/v1/hls/network/51636543/custom_asset/pod_serving_hls_manifest_mp4/ad_break_id/ab101.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db:TUL&pd=120000

您可以根据从视频播放器或服务器通知中检索到的广告插播时间点信息来计算广告连播清单网址参数。如需了解这些参数的要求,请参阅方法:Pod 清单

播放广告连播清单

在客户端视频播放器应用中,使用主视频播放器开始播放内容流,并按照视频播放器的文档观察播放和广告时间表(如果相关)。

如果您生成广告连播清单网址并将其插入服务器端的清单中,请观察视频播放器即将发生的广告插播时间点事件,并确保在每次广告插播时间点播放期间订阅 ID3 事件。如果您从客户端安排广告插播事件,请在创建时订阅 id3 事件。

报告展示次数和广告事件

当视频播放器播放广告连播时遇到 ID3 定时元数据时,监听视频播放器触发的广告事件并处理这些事件以发送媒体验证 ping