开始使用 IMA DAI SDK

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

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

<ph type="x-smartling-placeholder"></ph>

广告连播投放 DAI

借助 IMA SDK,您可以轻松将多媒体广告集成到您的网站和应用中。IMA SDK 可以 向任意 <ph type="x-smartling-placeholder"></ph> 符合 VAST 标准的广告服务器,并管理应用中的广告播放。借助 IMA DAI SDK,应用可以针对广告和内容视频(VOD 或直播内容)发出流式传输请求。然后,SDK 会返回一个合并的视频串流,这样您就不必在应用中管理广告视频和内容视频之间的切换。

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

IMA DAI Pod Serving 概览

前提条件

设置 pod 投放变量

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

以下是需要添加的广告连播数据流请求常量:

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

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

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

  • 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&amp;network=51636543&amp;event=google-sample" +
          "&amp;pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000" +
          "&amp;seg-host=dai.google.com&amp;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);
}

启用 pod 投放后,IMA 不会调用 VideoStreamPlayer.loadUrl(),因此您可以从中移除对 videoPlayer.setStreamUrl()videoPlayer.play() 的所有调用。

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