IMA SDK 可让您轻松地将多媒体广告集成到您的网站和应用中。IMA SDK 可从任何 符合 VAST 标准的广告服务器请求广告,并管理您应用中的广告播放。使用 IMA DAI SDK 时,应用会针对广告和内容视频(VOD 或直播内容)发出视频流请求。然后,SDK 会返回组合的视频流,因此您无需在应用中管理广告与内容视频之间的切换。
选择您感兴趣的 DAI 解决方案
全方位服务 DAI
本指南演示了如何将 IMA DAI SDK 集成到简单的视频播放器应用中。如果您想要查看或了解已完成的示例集成,请从 GitHub 下载 BasicExample。
IMA DAI 概览
实现 IMA DAI 涉及四个主要 SDK 组件,如本指南所示:
StreamDisplayContainer
:位于视频播放元素顶部并容纳广告界面元素的容器对象。AdsLoader
:一个对象,用于请求数据流并处理由数据流请求响应对象触发的事件。 您只能实例化一个广告加载器,以便在应用的整个生命周期内重复使用它。StreamRequest
:用于定义流请求的对象。视频流请求可以针对视频点播或直播。直播请求会指定资产键,而 VOD 请求会指定 CMS ID 和视频 ID。这两种请求类型都可以视需要包含访问指定视频流所需的 API 密钥和 Google Ad Manager 广告资源网代码,以供 IMA SDK 处理 Google Ad Manager 设置中指定的广告标识符。StreamManager
:用于处理动态广告插播数据流以及与 DAI 后端的互动的对象。视频流管理器还处理跟踪 ping,并将视频流和广告事件转发给发布商。
前提条件
- Android Studio
- SDK 集成的示例视频播放器应用
下载并运行示例视频播放器应用
示例应用提供了一个可正常运行的视频播放器,用于播放 HLS 视频。您可从此着手来集成 IMA DAI SDK 的 DAI 功能。
下载示例视频播放器应用并解压缩。
启动 Android Studio,然后选择 Open an existing Android Studio project;或者,如果 Android Studio 已在运行,请依次选择 File > New > Import Project。然后选择
SampleVideoPlayer/build.gradle
。依次选择 Tools > Android > Sync Project with Gradle Files 来运行 Gradle 同步。
依次选择 Run > Run 'app',确保播放器应用可在实体 Android 设备或 Android 虚拟设备上编译和运行。视频串流在播放前需要一些时间加载,这是正常现象。
查看示例视频播放器
示例视频播放器尚无任何 IMA DAI SDK 集成代码。 示例应用包含两个主要部分:
samplevideoplayer/SampleVideoPlayer.java
:基于 ExoPlayer 的 HLS 播放器,可作为 IMA DAI 集成的基础。videoplayerapp/MyActivity.java
:此 activity 会创建视频播放器,并向其传递Context
和media3.ui.PlayerView
。
将 IMA DAI SDK 添加到播放器应用
您还必须添加对 IMA DAI SDK 的引用。在 Android Studio 中,将以下内容添加到位于 app/build.gradle
的应用级 build.gradle
文件中:
集成 IMA DAI SDK
在
videoplayerapp
软件包(在app/java/com.google.ads.interactivemedia.v3.samples/videoplayerapp/
中)中创建一个名为SampleAdsWrapper
的新类,以封装现有的SampleVideoPlayer
,并添加用于实现 IMA DAI 的逻辑。为此,您必须先创建一个用于请求 DAI 视频流的AdsLoader
。此代码段包含 HLS 和 DASH 以及直播和 VOD 视频流的示例参数。如需设置正在播放的流,请更新
CONTENT_TYPE
变量。创建
createSampleVideoPlayerCallback()
辅助方法,以处理扩展VideoStreamPlayer.VideoStreamPlayerCallback
的SampleVideoPlayerCallback
接口实例的创建。若要使用 DAI,播放器必须将直播活动的 ID3 事件传递到 IMA DAI SDK。
callback.onUserTextReceived()
方法执行此操作,如以下示例代码所示。添加
buildStreamRequest()
方法以创建SteamRequest
。此方法会根据您设置CONTENT_TYPE
变量的方式在不同的数据流之间切换。本指南中使用的默认视频流是 IMA 的示例 VOD HLS 视频流。此外,您还需要一个
VideoStreamPlayer
来播放音频流,因此请添加createVideoStreamPlayer()
方法,该方法会创建一个实现VideoStreamPlayer
的匿名类。实现所需的监听器并添加对错误处理的支持。
请注意
AdErrorListener
实现,因为它会在广告无法播放时调用后备网址。由于内容和广告位于同一个视频流中,因此您必须准备好在 DAI 视频流遇到错误时调用后备视频流。添加用于日志记录的代码。
修改
videoplayerapp
中的MyActivity
以实例化并调用SampleAdsWrapper
。另外,在此处使用辅助方法调用ImaSdkFactory.initialize()
以创建ImaSdkSettings
实例。添加
getImaSdkSettings()
辅助方法以创建ImaSdkSettings
实例。修改 activity 的布局文件
activity_my.xml
,以添加用于日志记录的界面元素。
恭喜!现在,您正在 Android 应用中请求并展示视频广告。如需微调您的实现,请参阅书签、Snapback 和 API 文档。
问题排查
如果您在播放视频广告时遇到问题,请尝试下载已完成的 BasicExample。如果它在 BasicExample 中可以正常运行,则您的应用的 IMA 集成代码可能存在问题。
如果仍有问题,请访问 IMA SDK 论坛。