Menggunakan IMA DAI SDK di Android

Livestream Play yang terdaftar dengan Google Cloud Video Stitcher API

Panduan ini menunjukkan cara menggunakan IMA DAI SDK untuk Android guna meminta dan memutar livestream untuk peristiwa yang terdaftar dengan Google Cloud Video Stitcher API, serta cara menyisipkan jeda iklan selama pemutaran.

Panduan ini memperluas contoh dasar dari Panduan memulai untuk IMA DAI.

Untuk informasi tentang cara berintegrasi dengan platform lain atau cara menggunakan SDK sisi klien IMA, lihat Interactive Media Ads SDK.

Menyiapkan project Google Cloud

Masukkan variabel berikut untuk digunakan di IMA SDK:

Location
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 singkat dengan peran pengguna Penggabung Video:

OAUTH_TOKEN

Baca selengkapnya tentang membuat kredensial berumur pendek untuk akun layanan. Token OAuth dapat digunakan kembali di beberapa permintaan selama masa berlakunya belum habis.

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 pembuatan konfigurasi untuk peristiwa livestream dengan Video Stitcher API: CUSTOM_ASSET_KEY

Download contoh dasar

Download dan jalankan Contoh Dasar DAI IMA Android. Klik tombol play 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, Anda harus menggunakan ImaSdkFactory.createVideoStitcherLiveStreamRequest() untuk membuat sesi iklan dengan Google Ad Manager. Anda dapat menggunakan UI Google Ad Manager untuk menemukan sesi DAI yang dibuat untuk tujuan pemantauan dan proses debug.

Dalam contoh yang ada, terdapat pernyataan bersyarat untuk meminta streaming VOD atau livestream. Agar berfungsi dengan Google Cloud Video Stitcher API, Anda perlu menambahkan jalur baru untuk menampilkan StreamRequest yang dibuat menggunakan ImaSdkFactory.createVideoStitcherLiveStreamRequest().

Berikut contohnya:

videoplayerapp/SampleAdsWrapper.java

private sdkFactory ImaSdkFactory;
...
private enum ContentType {
  LIVE_HLS,
  LIVE_DASH,
// Add a Live HLS Google Cloud type.
  LIVE_HLS_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.LIVE_HLS_GOOGLE_CLOUD;
...

@Nullable
  private StreamRequest buildStreamRequest() {
    StreamRequest request;
    switch (CONTENT_TYPE) {
      ...
      case LIVE_HLS_GOOGLE_CLOUD:
        // Live HLS stream generated by the Google Cloud Video Stitcher API.
        request = sdkFactory.createVideoStitcherLiveStreamRequest(
          "NETWORK_CODE",
          "CUSTOM_ASSET_KEY",
          "LIVE_CONFIG_ID",
          "LOCATION",
          "PROJECT_NUMBER",
          "OAUTH_TOKEN"
        );
        request.setFormat(StreamFormat.HLS);
        return request;
    }
    // Content type not selected.
    return null;
  }
...

Muat ulang aplikasi untuk meminta dan memutar livestream kustom Anda.

(Opsional) Menambahkan opsi sesi streaming

Sesuaikan permintaan streaming Anda dengan menambahkan opsi sesi untuk mengganti konfigurasi Cloud Video Stitcher API default menggunakan StreamRequest.setVideoStitcherSessionOptions(). Jika Anda memberikan opsi yang tidak dikenal, Cloud 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.

public void requestAndPlayAds() {
  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  StreamRequest streamRequest = buildStreamRequest();

  Map<String, Object> sessionOptions = Map.of(
    "manifestOptions", Map.of(
      "includeRenditions", List.of(
        Map.of(
          "bitrateBps", 3000, "codecs",
          "hvc1.1.4.L126.B0, mp4a.40.2"),
        Map.of(
          "bitrateBps", 2000,
          "codecs", "avc1.64001f, mp4a.40.2")
      ),
      "bitrateOrder", "ascending"
    )
  );

  /* sessionOptions JSON structure.
   * {
   *  "manifestOptions": {
   *    "includeRenditions": [
   *      {"bitrateBps": 3000, "codecs": "hvc1.1.4.L126.B0, mp4a.40.2"},
   *      {"bitrateBps": 2000, "codecs": "avc1.64001f, mp4a.40.2"},
   *    ],
   *    "bitrateOrder": "ascending"
   *  }
   * };
   */

  streamRequest.setVideoStitcherSessionOptions(sessionOptions);
  adsLoader.requestStream(streamRequest);
}

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 disisipkan oleh encoder live stream.

  • Jika menggunakan live stream Anda sendiri, Anda harus menyisipkan penanda iklan. Untuk mengetahui informasi selengkapnya tentang penanda iklan HLS dan DASH yang didukung, lihat dokumentasi penanda iklan.

  • Jika Anda membuat live stream menggunakan Google Cloud Livestream API, sisipkan acara saluran jeda iklan.

Iklan akan segera diputar setelah jeda iklan disisipkan.

Pembersihan

Setelah berhasil menghosting live stream menggunakan Google Cloud Video Stitcher API dan memintanya menggunakan IMA DAI SDK untuk Android, penting untuk membersihkan semua resource penayangan.

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