Google Cloud Video Stitcher API で登録されたライブ配信を再生する
このガイドでは、Roku 向け IMA DAI SDK を使用して Google Cloud Video Stitcher API に登録されたイベントのライブ ストリームをリクエストして再生する方法と、再生中にミッドロール挿入点を挿入する方法について説明します。
このガイドでは、IMA DAI のスタートガイドの基本的な例を拡張します。
他のプラットフォームとの統合や IMA クライアントサイド SDK の使用については、Interactive Media Ads SDK をご覧ください。
Google Cloud プロジェクトの設定
IMA SDK で使用する次の変数を入力します。
- ロケーション
- ライブ構成が作成された Google Cloud リージョン:
LOCATION
- プロジェクト番号
- Video Stitcher API を使用する Google Cloud プロジェクト番号:
PROJECT_NUMBER
- OAuth トークン
Video Stitcher ユーザーロールを持つサービス アカウントの有効期間が短い OAuth トークン:
OAUTH_TOKEN
サービス アカウントの有効期間の短い認証情報の作成の詳細を確認します。OAuth トークンは、期限が切れていない限り、複数のリクエストで再利用できます。
- ネットワーク コード
広告をリクエストするためのアド マネージャー ネットワーク コード:
NETWORK_CODE
- ライブ構成 ID
- ライブ配信イベントの作成時に指定したライブ構成 ID:
LIVE_CONFIG_ID
- カスタム アセットキー
- Video Stitcher API を使用してライブ配信イベントの設定を作成するのプロセス中に生成されるアド マネージャーのカスタム アセットキー:
CUSTOM_ASSET_KEY
基本的な例をダウンロードする
IMA Roku DAI 基本サンプルをダウンロードして実行します。動画プレーヤーの [再生] ボタンをクリックして、30 秒ごとにミッドロール挿入点があるショート フィルム「Tears of Steel」を再生します。
ライブ配信をリクエストする
サンプル ストリームを Cloud Video Stitcher ライブ配信に置き換えるには、sdk.createVideoStitcherLiveStreamRequest()
関数を使用します。DAI セッションが公開されたら、Google アド マネージャーの UI を使用して、モニタリングとデバッグのために、生成された DAI セッションを特定できます。
既存のサンプルには、VOD StreamRequest
とライブ StreamRequest
のどちらを構築するかを判断する条件文があります。Google Cloud Video Stitcher API で機能するようにするには、新しいパスを追加して、前に生成した値を使用して Cloud Video Stitcher ライブ 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.testVideoStitcherLiveStream = {
title: "Video Stitcher Livestream",
customAssetKey: "CUSTOM_ASSET_KEY",
networkCode: "NETWORK_CODE",
liveConfigId: "LIVE_CONFIG_ID",
region: "LOCATION",
projectNumber: "PROJECT_NUMBER",
oAuthToken: "OAUTH_TOKEN",
apiKey: "",
type: "stitcherLive"
}
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.testVideoStitcherLiveStream
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 = "stitcherLive"
request = sdk.CreateVideoStitcherLiveStreamRequest(
streamData.customAssetKey,
streamData.networkCode,
streamData.liveConfigId,
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
これらの変更を追加したら、アプリを再読み込みして、カスタムライブ配信をリクエストして再生します。
(省略可)ストリーミング セッション オプションを追加する
StreamRequest に videoStitcherSessionOptions
パラメータを入力して、デフォルトの Cloud Video Stitcher API 構成をオーバーライドするセッション オプションを追加することで、ストリーム リクエストをカスタマイズします。
認識されないオプションを指定すると、Cloud Video Stitcher API により HTTP 400 エラーの応答が返されます。詳しくは、トラブルシューティング ガイドをご覧ください。
たとえば、次のコード スニペットを使用してマニフェスト オプションをオーバーライドできます。このコードは、ビットレートを低い順に並べた 2 つのストリーム マニフェストをリクエストします。
request = sdk.createVideoStitcherLiveStreamRequest(customAssetKey, networkCode, liveConfigId, 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 は、ミッドロール挿入点ごとに広告タグから取得された広告を挿入します。ミッドロール挿入点は、マニフェストで広告マーカーを使用して示されます。広告マーカーはライブ配信エンコーダによって挿入されます。
独自のライブ配信を使用している場合は、広告マーカーを挿入する必要があります。サポートされている HLS と DASH の広告マーカーについて詳しくは、広告マーカーのドキュメントをご覧ください。
Google Cloud Livestream API を使用してライブ ストリームを作成した場合は、ミッドロール挿入点のチャンネル イベントを挿入します。
広告は、ミッドロール挿入点が挿入された直後に再生されます。
クリーンアップ
Google Cloud Video Stitcher API を使用してライブ ストリームを正常にホストし、Roku 向け IMA DAI SDK を使用してリクエストできたので、サービング リソースをクリーンアップすることが重要です。
ライブ配信のクリーンアップ ガイドに沿って、不要なリソースとアセットを削除します。