Memutar live stream yang terdaftar dengan Google Cloud Video Stitcher API
Panduan ini menunjukkan cara menggunakan IMA DAI SDK untuk iOS 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
- Konteks pengguna
- Konteks pengguna untuk melacak permintaan. Dapat berupa
nil
. Nilai defaultnya adalahnil
dalam panduan ini.
Download dan siapkan contoh dasar
Download contoh DAI IMA untuk iOS dan ekstrak Contoh Dasar ke dalam folder baru. Contoh ini adalah sebuah Xcode yang mengandalkan Cocoapods untuk memuat IMA SDK.
Untuk menyiapkan sampel yang akan dijalankan, pastikan CocoaPods adalah yang diinstal, lalu buka folder contoh dasar di terminal dan jalankan perintah berikut:
pod install --repo-update
Setelah perintah tersebut selesai, Anda akan melihat file bernama BasicExample.xcworkspace
di
folder project Anda. Buka file ini di Xcode dan jalankan contoh untuk memastikan bahwa
video pengujian dan iklan diputar seperti yang diharapkan.
Meminta livestream
Untuk mengganti streaming sampel dengan livestream, Anda harus menggunakan
Class IMAVideoStitcherLiveStreamRequest
yang otomatis membuat iklan
sesi Google Ad Manager. Anda dapat menggunakan UI Google Ad Manager untuk menemukan
sesi DAI yang dibuat untuk
pemantauan dan proses debug.
Dalam contoh yang ada, terdapat contoh untuk meminta streaming VOD atau
live stream dari server DAI Google. Untuk membuat sampel bekerja dengan Google
Cloud Video Stitcher API, Anda harus mengganti requestStream
saat ini
dengan class yang menggunakan class IMAVideoStitcherLiveStreamRequest
:
ViewController.m
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h>
/// Fallback URL in case something goes wrong in loading the stream. If all goes well,
/// this will not be used.
static NSString *const kTestAppContentUrl_M3U8 =
@"//devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8";
static NSString *const kLiveConfigId = @"LIVE_CONFIG_ID";
static NSString *const kLocation = @"LOCATION";
static NSString *const kProjectNumber = @"PROJECT_NUMBER";
static NSString *const kOAuthToken = @"OAUTH_TOKEN";
static NSString *const kNetworkCode = @"NETWORK_CODE";
static NSString *const kCustomAssetKey = @"CUSTOM_ASSET_KEY";
@interface ViewController () <IMAAdsLoaderDelegate, IMAStreamManagerDelegate>
...
- (void)requestStream {
// Create an ad display container for ad rendering.
IMAAdDisplayContainer *adDisplayContainer =
[[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView
viewController:self
companionSlots:nil];
// Create an IMAAVPlayerVideoDisplay to give the SDK access to your video player.
IMAAVPlayerVideoDisplay *imaVideoDisplay =
[[IMAAVPlayerVideoDisplay alloc] initWithAVPlayer:self.contentPlayer];
IMAVideoStitcherLiveStreamRequest *request =
[[IMAVideoStitcherLiveStreamRequest alloc] initWithLiveStreamEventID:kLiveConfigId
region:kLocation
projectNumber:kProjectNumber
OAuthToken:kOAuthToken
networkCode:kNetworkCode
customAssetKey:kCustomAssetKey
adDisplayContainer:adDisplayContainer
videoDisplay:imaVideoDisplay
userContext:nil
videoStitcherSessionOptions:nil];
[self.adsLoader requestStreamWithRequest:request];
}
(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
IMAVideoStitcherLiveStreamRequest.
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.
Objective-C
// Define session options JSON string.
// The following session options are examples. Use session options
// that are compatible with your video stream.
NSString *sessionOptionsStr =
@"{"
" \"manifestOptions\": {"
" \"includeRenditions\":["
" {\"bitrateBps\": 3000, \"codecs\": \"hvc1.1.4.L126.B0, mp4a.40.2\"},"
" {\"bitrateBps\": 2000, \"codecs\": \"avc1.64001f, mp4a.40.2\"},"
" ]"
" }"
"}";
// convert JSON NSString to NSDictionary
NSData *sessionOptionsData = [sessionOptionsStr dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
NSDictionary *sessionOptions = [NSJSONSerialization
JSONObjectWithData:sessionOptionsData
options:0
error:&error];
// make stream request
IMAVideoStitcherLiveStreamRequest *request =
[[IMAVideoStitcherLiveStreamRequest alloc] initWithLiveStreamEventID:kLiveConfigId
region:kRegion
projectNumber:kProjectNumber
OAuthToken:kOAuthToken
networkCode:kNetworkCode
customAssetKey:kCustomAssetKey
adDisplayContainer:adDisplayContainer
videoDisplay:imaVideoDisplay
userContext:nil
videoStitcherSessionOptions:sessionOptions];
[self.adsLoader requestStreamWithRequest:request];
Swift
// Define session options JSON string.
// The following session options are examples. Use session options
// that are compatible with your video stream.
let sessionOptionsStr = """
{
"manifestOptions": {
"includeRenditions": [
{"bitrateBps": 3000, "codecs": "hvc1.1.4.L126.B0, mp4a.40.2"},
{"bitrateBps": 2000, "codecs": "avc1.64001f, mp4a.40.2"},
],
"bitrateOrder": "ascending"
}
}
"""
// convert JSON string to dictionary
guard let sessionOptionsData = sessionOptionsStr.data(using: .utf8, allowLossyConversion: false) else { return nil }
let sessionOptions = try? JSONSerialization.jsonObject(with: sessionOptionsData, options: .mutableContainers)
// make stream request
let request = IMAVideoStitcherLiveStreamRequest(
liveStreamEventID:ViewController.liveConfigId
region:ViewController.region
projectNumber:ViewController.projectNumber
OAuthToken:ViewController.oAuthToken
networkCode:ViewController.networkCode
customAssetKey:ViewController.customAssetKey
adDisplayContainer:adDisplayContainer
videoDisplay:imaVideoDisplay
userContext:nil
videoStitcherSessionOptions:sessionOptions)
adsLoader?.requestStream(with: request)
Jalankan project, lalu Anda dapat meminta dan memutar livestream kustom.
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.
Jika menggunakan live stream Anda sendiri, Anda harus menyisipkan penanda iklan. Sebagai informasi selengkapnya tentang penanda iklan HLS dan DASH yang didukung, lihat dokumentasi penanda iklan.
Jika Anda membuat live stream menggunakan Google Cloud Livestream API, menyisipkan peristiwa saluran jeda iklan.
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 iOS, penting untuk membersihkan semua layanan Google Cloud Platform.
Ikuti pembersihan livestream panduan untuk menghapus sumber daya dan aset yang tidak diperlukan.