Menggunakan IMA DAI SDK di Roku

Livestream Play yang terdaftar dengan Google Cloud Video Stitcher API

Panduan ini menunjukkan cara menggunakan IMA DAI SDK untuk Roku untuk meminta dan memutar livestream untuk acara yang terdaftar di Google Cloud Video Stitcher API, dan cara menyisipkan jeda iklan selama pemutaran.

Panduan ini memperluas contoh dasar dari sesi Memulai kami untuk IMA DAI.

Untuk informasi tentang integrasi dengan platform lain atau tentang penggunaan IMA SDK sisi klien, lihat Interactive Media Ads SDK.

Menyiapkan project Google Cloud

Masukkan variabel berikut untuk digunakan di IMA SDK:

Lokasi
Region Google Cloud tempat konfigurasi live Anda dibuat: LOCATION
Nomor project
Nomor project Google Cloud yang menggunakan Video Stitcher API: PROJECT_NUMBER
Token OAuth

Token OAuth akun layanan yang berumur pendek dengan pengguna Penggabung Video peran:

OAUTH_TOKEN

Baca selengkapnya tentang membuat kredensial berumur pendek untuk layanan akun Google. Token OAuth dapat digunakan kembali pada beberapa permintaan selama belum kedaluwarsa.

Kode jaringan

Kode jaringan Ad Manager untuk meminta iklan: NETWORK_CODE

ID konfigurasi live
ID konfigurasi live yang Anda tentukan saat membuat acara livestream: LIVE_CONFIG_ID
Kunci aset kustom
Kunci aset kustom Ad Manager yang dihasilkan selama proses membuat konfigurasi untuk acara livestream dengan Video Stitcher API: CUSTOM_ASSET_KEY

Download contoh dasar

Download dan jalankan IMA Roku DAI Basic Contoh. Klik putar di pemutar video untuk memulai film pendek "Tears of Steel", yang berisi jeda iklan setiap 30 detik.

Meminta livestream

Untuk mengganti streaming sampel dengan livestream Cloud Video Stitcher, gunakan sdk.createVideoStitcherLiveStreamRequest() fungsi tersebut. Setelah sesi DAI aktif, Anda dapat menggunakan UI Google Ad Manager untuk menemukan sesi DAI yang dihasilkan untuk tujuan pemantauan dan proses debug.

Dalam sampel yang ada, terdapat pernyataan kondisional untuk menentukan apakah akan membuat StreamRequest VOD atau StreamRequest live. Untuk membuatnya bekerja dengan Google Cloud Video Stitcher API, menambahkan jalur baru untuk membuat Cloud Video Penggabungan StreamRequest live menggunakan nilai yang dihasilkan sebelumnya.

Contoh

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

contoh_dasar/komponen/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

Setelah Anda menambahkan perubahan ini, muat ulang aplikasi untuk meminta dan memutar setelan kustom livestream.

(Opsional) Menambahkan opsi sesi streaming

Sesuaikan permintaan streaming Anda dengan menambahkan opsi sesi untuk mengganti setelan default konfigurasi Cloud Video Stitcher API dengan mengisi videoStitcherSessionOptions di parameter StreamRequest .

Jika Anda memberikan opsi tidak dikenal, Video Stitcher API akan merespons dengan error HTTP 400. Lihat panduan pemecahan masalah untuk mendapatkan bantuan.

Misalnya, Anda dapat mengganti opsi manifes dengan cuplikan kode berikut, yang meminta dua manifes streaming dengan rendisi yang diurutkan dari kecepatan bit terendah ke tertinggi.


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)

Menyisipkan jeda iklan

Google Cloud Video Stitcher API menyisipkan iklan yang diambil dari tag iklan untuk setiap jeda iklan. Jeda iklan ditunjukkan dalam manifes menggunakan penanda iklan. Penanda iklan yang disisipkan oleh encoder live stream.

Iklan akan segera diputar setelah jeda iklan disisipkan.

Pembersihan

Sekarang Anda berhasil menyelenggarakan live stream menggunakan Google Cloud Video Stitcher API dan memintanya menggunakan IMA DAI SDK untuk Roku, penting untuk membersihkan penyaluran Google Cloud Platform.

Ikuti pembersihan livestream panduan untuk menghapus sumber daya dan aset yang tidak diperlukan.