Google Cloud Video Stitcher API で登録された VOD ストリームの再生
このガイドでは、IMA DAI SDK for Roku を使用して、Google Cloud VOD ストリーム セッション。
このガイドでは、IMA DAI のスタートガイドの基本的な例を詳しく説明します。
他のプラットフォームとの統合や IMA クライアントサイド SDK の使用方法については、Interactive Media Ads SDK をご覧ください。
Google Cloud プロジェクトの設定
IMA SDK で使用する次の変数を入力します。
- ロケーション
- VOD 構成が作成された Google Cloud リージョン:
LOCATION
- プロジェクト番号
- Video Stitcher API を使用する Google Cloud プロジェクト番号:
PROJECT_NUMBER
- OAuth トークン
Video Stitcher ユーザーロールを持つサービス アカウントの有効期間が短い OAuth トークン:
OAUTH_TOKEN
有効期間が短い OAuth トークンの作成の詳細を確認します。OAuth トークンは、期限切れになっていなければ、複数のリクエストで再利用できます。
- ネットワーク コード
広告をリクエストするためのアド マネージャー ネットワーク コード:
NETWORK_CODE
- VOD 構成 ID
VOD ストリームの VOD 構成 ID:
VOD_CONFIG_ID
VOD 構成 ID の作成方法については、クラウド スティッチング作成の VOD 構成ガイドをご覧ください。
基本的な例の設定
IMA Roku DAI Basic Example をダウンロードして実行します。動画プレーヤーの再生ボタンをクリックすると、短編映画「Tears of Steel」が再生されます。この映画には、30 秒ごとに広告ブレークが含まれています。
VOD ストリームのリクエスト
sdk.createVideoStitcherVodStreamRequestWithVodConfig()
関数を使用して、サンプル ストリームを広告合成された VOD ストリームに置き換えます。Google アド マネージャーの UI を使用して、モニタリングとデバッグのために、生成された DAI セッションを特定できます。
既存のサンプルには、VOD StreamRequest
とライブ StreamRequest
のどちらを作成するかを決定する条件文があります。以前に生成した値を使用して、Cloud Video Stitcher VOD StreamRequest
を作成する新しいパスを追加します。
次に例を示します。
basic_example/components/MainScene.xml
<?xml version="1.0" encoding="utf-8" ?>
<component name="MainScene" extends="Scene" initialFocus = "myVideo">
<script type="text/brightscript">
<![CDATA[
function init()
m.video = m.top.findNode("myVideo")
m.video.notificationinterval = 1
m.testLiveStream = {
title: "Livestream",
assetKey: "c-rArva4ShKVIAkNfy6HUQ",
apiKey: "",
type: "live"
}
m.testVodStream = {
title: "VOD stream"
contentSourceId: "2548831",
videoId: "tears-of-steel",
apiKey: "",
type: "vod"
}
m.testVideoStitcherVodStream = {
title: "My Stream Title",
vodConfigId: "VOD_CONFIG_ID",
networkCode: "NETWORK_CODE",
region: "LOCATION",
projectNumber: "PROJECT_NUMBER",
oAuthToken: "OAUTH_TOKEN",
apiKey: "",
title: "Video Stitcher VOD Stream",
type: "stitcherVod"
}
loadImaSdk()
end function
function loadImaSdk() as void
m.sdkTask = createObject("roSGNode", "imasdk")
m.sdkTask.observeField("sdkLoaded", "onSdkLoaded")
m.sdkTask.observeField("errors", "onSdkLoadedError")
' Set this to the stream data you would like to play.
selectedStream = m.testVideoStitcherVodStream
m.videoTitle = selectedStream.title
m.sdkTask.streamData = selectedStream
m.sdkTask.observeField("urlData", "urlLoadRequested")
m.sdkTask.video = m.video
' Setting control to run starts the task thread.
m.sdkTask.control = "RUN"
end function
basic_example/components/Sdk.xml
Sub loadStream()
sdk = m.sdk
sdk.initSdk()
setupVideoPlayer()
request = {}
streamData = m.top.streamData
if streamData.type = "live"
request = sdk.CreateLiveStreamRequest(streamData.assetKey, streamData.apiKey)
else if streamData.type = "vod"
request = sdk.CreateVodStreamRequest(streamData.contentSourceId, streamData.videoId, streamData.apiKey)
else if streamData.type = "stitcherVod"
request = sdk.createVideoStitcherVodStreamRequest(
streamData.vodConfigId,
streamData.networkCode,
streamData.region,
streamData.projectNumber,
streamData.oAuthToken
)
else
request = sdk.CreateStreamRequest()
end if
request.player = m.player
request.adUiNode = m.top.video
requestResult = sdk.requestStream(request)
If requestResult <> Invalid
print "Error requesting stream ";requestResult
Else
m.streamManager = Invalid
While m.streamManager = Invalid
sleep(50)
m.streamManager = sdk.getStreamManager()
End While
If m.streamManager = Invalid or m.streamManager["type"] <> Invalid or m.streamManager["type"] = "error"
errors = CreateObject("roArray", 1, True)
print "error ";m.streamManager["info"]
errors.push(m.streamManager["info"])
m.top.errors = errors
Else
m.top.streamManagerReady = True
addCallbacks()
m.streamManager.start()
End If
End If
End Sub
アプリを再読み込みして、カスタム VOD ストリームをリクエストして再生します。
(省略可)ストリーミング セッション オプションを追加する
StreamRequest に videoStitcherSessionOptions
パラメータを入力して、デフォルトの Cloud Video Stitcher API 構成をオーバーライドするセッション オプションを追加することで、ストリーム リクエストをカスタマイズします。
認識されないオプションを指定すると、Cloud Video Stitcher API は HTTP 400 エラーで応答します。トラブルシューティング ガイドをご覧ください。
たとえば、次のコード スニペットでマニフェスト オプションをオーバーライドできます。このコードは、ビットレートを最小に並べたレンディションをもつ 2 つのストリーム マニフェストをリクエストします。
request = sdk.createVideoStitcherVodStreamRequestWithVodConfig(vodConfigId, networkCode, region, projectNumber, oAuthToken)
request.player = m.player
request.adUiNode = m.top.video
' The following session options are examples. Use session options
' that are compatible with your video stream.
sessionOptions = {
"manifestOptions": {
"includeRenditions":[
{"bitrateBps": 3000, "codecs": "hvc1.1.4.L126.B0, mp4a.40.2"},
{"bitrateBps": 2000, "codecs": "avc1.64001f, mp4a.40.2"},
]
}
}
request.videoStitcherSessionOptions = sessionOptions
requestResult = sdk.requestStream(request)
クリーンアップ
Google Cloud Video Stitcher API を使用して VOD ストリームを正常にホストし、Roku 向け IMA DAI SDK を使用してリクエストできたので、サービング リソースをクリーンアップすることが重要です。
VOD のクリーンアップ ガイドに沿って、不要なリソースとアセットを削除します。