借助 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 应用中请求和展示视频广告了。如需优化植入,请参阅书签、返回和 API 文档。
问题排查
如果您在播放视频广告时遇到问题,请尝试下载已完成的 BasicExample。如果它在 BasicExample 中正常运行,则应用的 IMA 集成代码可能存在问题。
如果您仍然遇到问题,请访问 IMA SDK 论坛。