播放使用 Google Cloud Video Stitcher API 注册的 VOD 串流
本指南演示了如何使用适用于 Android 的 IMA DAI SDK 请求和播放 Google Cloud VOD 流式传输会话。
本指南对 IMA DAI 入门指南中的基本示例进行了扩展。
如需了解如何与其他平台集成或如何使用 IMA 客户端 SDK,请参阅互动式媒体广告 SDK。
如果您想查看或跟随已完成的示例集成,请下载 Cloud 视频拼接器示例。
设置 Google Cloud 项目
输入以下变量以在 IMA SDK 中使用:
- 位置
- 创建 VOD 配置的 Google Cloud 区域:
LOCATION
- 项目编号
- 使用 Video Stitcher API 的 Google Cloud 项目编号:
PROJECT_NUMBER
- OAuth 令牌
具有视频拼接工具用户角色的服务账号的短期有效 OAuth 令牌:
OAUTH_TOKEN
详细了解如何创建短期有效的 OAuth 令牌。 只要 OAuth 令牌未过期,就可以在多个请求中重复使用。
- 广告资源网代码
用于请求广告的 Ad Manager 广告资源网代码:
NETWORK_CODE
- VOD 配置 ID
VOD 视频流的 VOD 配置 ID:
VOD_CONFIG_ID
如需详细了解如何创建 VOD 配置 ID,请参阅 Cloud 拼接创建 VOD 配置指南。
设置基本示例
前往 IMA Android DAI GitHub 版本页面,下载基本示例。此示例是一个 Android 应用,您可以在 Android Studio 中打开它以进行测试。
如需使用非 Cloud Video Stitcher VOD 串流进行测试,请将 SampleAdsWrapper.java 中的 CONTENT_TYPE
常量设置为 ContentType.VOD_HLS
或 ContentType.VOD_DASH
,以加载相应串流的 CMS ID 和视频 ID。然后,在 SampleVideoPlayer.java 中,将 currentlyPlayingStreamType
设置为 CONTENT_TYPE_HLS
或 CONTENT_TYPE_DASH
,以正确处理所选直播类型的元数据。
如果一切正常,点击视频播放器上的“播放”按钮即可开始播放短片“钢铁之泪”,其中包含前贴片广告插播。
请求 VOD 视频流
如需将选段串流替换为广告拼接的 VOD 串流,请使用 sdkFactory.createVideoStitcherVodStreamRequest()
通过 Google Ad Manager 创建广告会话。您可以使用 Google Ads 经理界面查找生成的 DAI 会话,以进行监控和调试。
sdkFactory.createVideoStitcherVodStreamRequest()
适用于 IMA DAI SDK v3.30.0 或更高版本。
如需将 sdkFactory.createVideoStitcherVodStreamRequest()
与 vodConfigId
参数搭配使用,您需要使用 IMA DAI SDK 3.33.0 或更高版本。
在现有示例中,有用于请求 VOD 流式传输或直播的条件语句。为了使其与 Google Cloud Video Stitcher API 配合使用,您需要添加一个新路径,以返回使用 sdkFactory.createVideoStitcherVodStreamRequest()
创建的 StreamRequest
。
示例如下:
videoplayerapp/SampleAdsWrapper.java
...
private enum ContentType {
LIVE_HLS,
LIVE_DASH,
// Add a VOD HLS Google Cloud type. DASH streams are also supported.
VOD_HLS_GOOGLE_CLOUD,
VOD_DASH_GOOGLE_CLOUD,
VOD_HLS,
VOD_DASH,
}
// Set CONTENT_TYPE to the associated enum for the
// stream type you would like to test.
private static final ContentType CONTENT_TYPE =
ContentType.VOD_HLS_GOOGLE_CLOUD;
...
@Nullable
private StreamRequest buildStreamRequest() {
StreamRequest request;
switch (CONTENT_TYPE) {
...
case VOD_HLS_GOOGLE_CLOUD:
case VOD_DASH_GOOGLE_CLOUD:
// VOD HLS or DASH stream generated by the
// Google Cloud Video Stitcher API.
request = sdkFactory.createVideoStitcherVodStreamRequest(
"NETWORK_CODE",
"LOCATION",
"PROJECT_NUMBER",
"OAUTH_TOKEN",
"VOD_CONFIG_ID"
);
if (CONTENT_TYPE == ContentType.VOD_HLS_GOOGLE_CLOUD) {
request.setFormat(StreamFormat.HLS);
} else {
request.setFormat(StreamFormat.DASH);
}
return request;
}
// Content type not selected.
return null;
}
...
重新加载应用以请求和播放自定义 VOD 串流。
(可选)添加在线播放会话选项
使用 StreamRequest.setVideoStitcherSessionOptions()
添加会话选项以替换默认的 Cloud Video Stitcher API 配置,从而自定义串流请求。如果您提供的选项无法识别,Cloud Video Stitcher API 将返回 HTTP 400 错误。如需帮助,请参阅问题排查指南。
例如,您可以使用以下代码段替换清单选项,该代码段会请求两个串流清单,其中呈现方式的排序方式为从最低比特率到最高比特率。
public void requestAndPlayAds() {
adsLoader.addAdErrorListener(this);
adsLoader.addAdsLoadedListener(this);
StreamRequest streamRequest = buildStreamRequest();
// The following session options are examples. Use session options
// that are compatible with your video stream.
Map<String, Object> sessionOptions = Map.of(
"manifestOptions", Map.of(
"bitrateOrder", "ascending"
)
);
/* sessionOptions JSON structure.
* {
* "manifestOptions": {
* "bitrateOrder": "ascending"
* }
* };
*/
streamRequest.setVideoStitcherSessionOptions(sessionOptions);
adsLoader.requestStream(streamRequest);
}
清理
现在,您已成功使用 Google Cloud Video Stitcher API 托管 VOD 流式传输,并使用 Android 版 IMA DAI SDK 请求了该流式传输,因此请务必清理所有广告投放资源。
请按照视频点播清理指南移除所有不需要的资源和资产。