Google Cloud Video Stitcher API で登録された VOD ストリームの再生
このガイドでは、Roku 向け IMA DAI SDK を使用して Google Cloud VOD ストリーム セッションをリクエストして再生する方法を説明します。
このガイドでは、IMA DAI のスタートガイドの基本的な例を拡張します。
他のプラットフォームとの統合や IMA クライアントサイド SDK の使用については、Interactive Media Ads SDK をご覧ください。
完成した統合サンプルを確認または確認する場合は、Cloud Video Stitcher の例をダウンロードしてください。
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 の作成の詳細については、Cloud スティッチングで VOD 構成を作成するガイドをご覧ください。
基本的な例の設定
IMA Roku DAI 基本サンプルをダウンロードして実行します。動画プレーヤーの [再生] ボタンをクリックして、30 秒ごとにミッドロール挿入点があるショート フィルム「Tears of Steel」を再生します。
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 ストリームをリクエストして再生します。
(省略可)ストリーミング セッション オプションを追加する
IMAVideoStitcherLiveStreamRequest に 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": {
"bitrateOrder": "ascending"
}
}
request.videoStitcherSessionOptions = sessionOptions
requestResult = sdk.requestStream(request)
クリーンアップ
Google Cloud Video Stitcher API を使用して VOD ストリームを正常にホストし、Roku 用の IMA DAI SDK を使用してリクエストできたので、サービング リソースをクリーンアップすることが重要です。
VOD のクリーンアップ ガイドに沿って、不要なリソースとアセットを削除します。