IMA SDK 可让您轻松地将多媒体广告集成到您的网站和应用中。IMA SDK 可以 向任意 <ph type="x-smartling-placeholder"></ph> 符合 VAST 标准的广告服务器,并管理应用中的广告播放。借助 IMA DAI SDK,应用 针对广告和内容视频(VOD 或直播内容)的视频流请求。然后,SDK 会返回 组合视频流,因此您无需管理在广告与内容视频之间的切换 。
选择您感兴趣的 DAI 解决方案
广告连播投放 DAI
IMA SDK 可让您轻松地将多媒体广告集成到您的网站和应用中。IMA SDK 可以 向任意 <ph type="x-smartling-placeholder"></ph> 符合 VAST 标准的广告服务器,并管理应用中的广告播放。借助 IMA DAI SDK,应用 针对广告和内容视频(VOD 或直播内容)的视频流请求。然后,SDK 会返回 组合视频流,因此您无需管理在广告与内容视频之间的切换 。
本指南演示了如何使用 IMA DAI 播放 DAI Pod Serving 视频流 SDK 包含一个简单的视频播放器,用于播放直播和 VOD 视频流。如果您想 想要查看或了解已完成的示例集成,请下载 广告连播投放示例
IMA DAI Pod Serving 概览
StreamRequest
:一个对象,用于定义流请求 与 Google 的广告服务器通信必须使用ImaSdkFactory.createPodStreamRequest()
或ImaSdkFactory.createPodVodStreamRequest()
来启用 Pod 传送这些方法需要一个网络代码,并且createPodStreamRequest
还需要一个自定义资产键,以及 可选的 API 密钥。两者均包含其他可选参数。StreamManager
:用于处理 视频流和 IMA DAI SDK(例如,触发跟踪 ping 和 将视频流事件转发给发布商。
前提条件
已设置 IMA DAI SDK 的 Android 应用可通过 DAI 广告。如果您还没有此类应用程序,我们建议您使用 Android DAI BasicExample 的形式 起点BasicExample 包含本指南中引用的代码库。
您的应用必须使用
VideoStreamPlayerCallback.onUserTextReceived()
才能确保 IMA DAI 正常运行。请参阅此全服务 DAI 代码段示例。
设置 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 上的示例。