本指南演示了如何将 IMA DAI SDK 集成到简单的视频播放器应用中。如果您想查看或按照完整的集成示例进行操作,请从 GitHub 下载 BasicExample。
IMA DAI 概览
如本指南所示,实现 IMA DAI 涉及四个主要 SDK 组件:
StreamDisplayContainer:一个容器对象,位于视频播放元素之上,用于容纳广告界面元素。AdsLoader:一个对象,用于请求视频流并处理由视频流请求响应对象触发的事件。 您应该只实例化一个广告加载器,该加载器可在应用的整个生命周期内重复使用。StreamRequest:定义流请求的对象。视频流请求可以针对视频点播或直播。直播请求会指定素材资源键,而 VOD 请求会指定 CMS ID 和视频 ID。这两种请求类型都可以选择包含访问指定视频流所需的 API 密钥,以及供 IMA SDK 按照 Google Ad Manager 设置中的指定方式处理广告标识符的 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。依次选择工具 > Android > 将项目与 Gradle 文件同步,运行 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 中,将以下内容添加到应用级 build.gradle 文件(位于 app/build.gradle)中。IMA SDK 要求启用库脱糖,您必须在 build.gradle 文件中设置 coreLibraryDesugaringEnabled true 并添加 'com.android.tools:desugar_jdk_libs' 作为依赖项。如需了解详情,请参阅通过脱糖提供的满足 Nio 规格要求的 Java 11 及更高版本 API。
集成 IMA DAI SDK
在
videoplayerapp软件包(位于app/java/com.google.ads.interactivemedia.v3.samples/videoplayerapp/中)中创建一个名为SampleAdsWrapper的新类,以封装现有的SampleVideoPlayer并添加实现 IMA DAI 的逻辑。为此,您必须先创建一个AdsLoader,用于请求 DAI 视频流。此代码段包含 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 论坛。