开始使用 IMA DAI SDK

IMA SDK 可让您轻松地将多媒体广告集成到您的网站和应用中。IMA SDK 可以 向任意 符合 VAST 标准的广告服务器,并管理应用中的广告播放。借助 IMA DAI SDK,应用 针对广告和内容视频(VOD 或直播内容)的视频流请求。然后,SDK 会返回 组合视频流,因此您无需管理在广告与内容视频之间的切换 。

选择您感兴趣的 DAI 解决方案

广告连播投放 DAI

IMA SDK 可让您轻松地将多媒体广告集成到您的网站和应用中。IMA SDK 可以 向任意 符合 VAST 标准的广告服务器,并管理应用中的广告播放。借助 IMA DAI SDK,应用 针对广告和内容视频(VOD 或直播内容)的视频流请求。然后,SDK 会返回 组合视频流,因此您无需管理在广告与内容视频之间的切换 。

本指南演示了如何使用 IMA DAI 播放 DAI Pod Serving 视频流 SDK 包含一个简单的视频播放器,用于播放直播和 VOD 视频流。如果您想 想要查看或了解已完成的示例集成,请下载 广告连播投放示例

IMA DAI Pod Serving 概览

前提条件

设置 Pod 服务变量

广告连播投放所需的所有更改都在 SampleAdsWrapper.java 中完成。通过 第一步是更新常量变量。

以下是要添加的广告连播视频流请求常量:

  • STREAM_URL仅用于直播 - 由 您的清单操纵器或使用 Pod 传送的第三方合作伙伴。它应该 您需要先插入 IMA DAI SDK 提供的视频流 ID,然后才能 发出请求。在这个示例中,视频流网址包含一个占位符 "[[STREAMID]]"(将替换为数据流 ID),然后再执行 请求。

  • NETWORK_CODE:您的 Ad Manager 360 账号的广告资源网代码。

  • CUSTOM_ASSET_KEY:仅用于直播 - 您在创建视频时指定的自定义素材资源键 用于在 Ad Manager 360 中标识广告连播投放事件这可以通过 您的清单操纵器或第三方 Pod 投放合作伙伴。

  • API_KEY: 仅用于直播 - 一个可选的 API 密钥, 从 IMA DAI SDK 检索视频流 ID 所需的参数。

Android DAI BasicExample 旨在播放各种不同的视频流 但对于广告连播投放,它已设置为仅播放单个视频流 更改示例的变量部分以匹配以下内容:

/** This class adds ad-serving support to Sample HlsVideoPlayer */
public class SampleAdsWrapper
        implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {

  // Podserving Stream Constants.
  private static final String STREAM_URL =
          "https://encodersim.sandbox.google.com/masterPlaylist/9c654d63-5373-4673-8c8d-6d92b66b9d46/" +
          "master.m3u8?gen-seg-redirect=true&network=51636543&event=google-sample" +
          "&pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000" +
          "&seg-host=dai.google.com&stream_id=[[STREAMID]]";
  private static final String NETWORK_CODE = "51636543";
  private static final String CUSTOM_ASSET_KEY = "google-sample";
  private static final String API_KEY = "";

  private static final String PLAYER_TYPE = "DAISamplePlayer";

  /** Log interface, so we can output the log commands to the UI or similar. */
  public interface Logger {

...

创建直播或 VOD 广告连播视频流请求以启用广告连播传送

直播广告连播投放

移除过去用来在二者之间切换的 buildStreamRequest() 方法 构建各种类型的流。然后,将 requestAndPlayAds() 更改为调用 ImaSdkFactory.createPodStreamRequest(),创建实时广告连播投放广告 请求。最后,使用 AdsLoader.requestStream() 请求该数据流。

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

VOD 视频流广告连播投放

移除过去用来在二者之间切换的 buildStreamRequest() 方法 构建各种类型的流。然后,将 requestAndPlayAds() 更改为调用 ImaSdkFactory.createPodVodStreamRequest(),用于创建 VOD 广告连播投放广告 请求。最后,使用 AdsLoader.requestStream() 请求该数据流。

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodVodStreamRequest(NETWORK_CODE);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

修改并设置直播网址

直播广告连播投放

调用 StreamManager.getStreamId() 即可获取数据流 ID。然后,需要 已插入到 STEAM_URL 中,用于替换 "[[STREAMID]]"。此项变更生效后, 因此可以使用 videoPlayer.setStreamUrl() 设置新的直播网址。

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  String streamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);

  streamManager.init();

  videoPlayer.setStreamUrl(streamUrl);
  videoPlayer.play();
}

VOD 视频流广告连播投放

调用 StreamManager.getStreamId() 即可获取数据流 ID。然后,请求 来自您的视频技术合作伙伴 (VTP) 的视频流网址。然后调用 StreamManager.loadThirdPartyStream(),以允许 IMA 加载直播网址和任何 TVP 返回的字幕。

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  // 'vtpInterface' is a place holder for your own video technology partner
  // (VTP) API calls.
  String streamUrl = vtpInterface.requestStreamURL(streamID);

  streamManager.init();

  // Pass any subtitles returned by your VTP in this step as well.
  streamManager.loadThirdPartyStream(streamUrl, subtitles);
}

启用广告连播投放后,IMA 不会向 VideoStreamPlayer.loadUrl(),这样就可以移除对 其中 videoPlayer.setStreamUrl()videoPlayer.play()

大功告成!现在,您正在使用 IMA DAI SDK如需查看所使用的 Android SDK 的其他示例, 请查看 GitHub 上的示例