Memutar live stream yang terdaftar dengan Google Cloud Video Stitcher API
Panduan ini menunjukkan cara menggunakan IMA DAI SDK untuk tvOS guna meminta dan memutar live stream untuk peristiwa yang terdaftar dengan Google Cloud Video Stitcher API, dan cara menyisipkan jeda iklan selama pemutaran.
Panduan ini memperluas contoh dasar dari Panduan memulai untuk DAI IMA.
Untuk informasi tentang cara berintegrasi dengan platform lain atau menggunakan SDK sisi klien IMA, lihat Interactive Media Ads SDK.
Jika Anda ingin melihat atau mengikuti integrasi contoh yang telah selesai, download contoh stitcher video Cloud untuk Objective-C atau Swift.
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 berumur pendek akun layanan dengan peran pengguna Video Stitcher:
OAUTH_TOKEN
Baca selengkapnya tentang membuat kredensial dengan masa berlaku singkat untuk akun layanan. Token OAuth dapat digunakan kembali di beberapa permintaan selama belum berakhir masa berlakunya.
- Kode jaringan
Kode jaringan Ad Manager untuk meminta iklan:
NETWORK_CODE
- ID konfigurasi live
- ID konfigurasi live yang Anda tentukan saat membuat acara live stream:
LIVE_CONFIG_ID
- Kunci aset kustom
- Kunci aset kustom Ad Manager yang dibuat selama proses membuat
konfigurasi untuk peristiwa live stream
dengan Video Stitcher API:
CUSTOM_ASSET_KEY
Mendownload dan menyiapkan contoh dasar
Download contoh IMA DAI untuk tvOS dan ekstrak Contoh Dasar ke folder baru. Contoh ini adalah project Xcode yang mengandalkan Cocoapods untuk memuat IMA SDK.
Untuk menyiapkan sampel agar dapat dijalankan, pastikan CocoaPods telah 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. Buka file ini di Xcode dan jalankan contoh untuk memastikan
video dan iklan pengujian diputar seperti yang diharapkan.
Meminta live stream
Untuk mengganti streaming sampel dengan live stream, Anda harus menggunakan
class IMAVideoStitcherLiveStreamRequest
yang secara otomatis membuat sesi
iklan dengan Google Ad Manager. Anda dapat menggunakan UI Google Ad Manager untuk menemukan
sesi DAI yang dihasilkan untuk
tujuan pemantauan dan proses debug.
Dalam contoh yang ada, terdapat contoh untuk meminta streaming VOD atau
livestream dari server DAI Google. Agar contoh berfungsi dengan Google Cloud Video Stitcher API, Anda harus mengganti fungsi requestStream
saat ini dengan fungsi yang menggunakan class IMAVideoStitcherLiveStreamRequest
:
ViewController.m
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h>
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";
static NSString *const kBackupStreamURLString =
@"http://googleimadev-vh.akamaihd.net/i/big_buck_bunny/bbb-,480p,720p,1080p,.mov.csmil/"
@"master.m3u8";
@interface ViewController () <IMAAdsLoaderDelegate, IMAStreamManagerDelegate>
...
- (void)requestStream {
IMAAVPlayerVideoDisplay *videoDisplay =
[[IMAAVPlayerVideoDisplay alloc] initWithAVPlayer:self.playerViewController.player];
IMAAdDisplayContainer *adDisplayContainer =
[[IMAAdDisplayContainer alloc] initWithAdContainer:self.adContainerView];
IMAVideoStitcherLiveStreamRequest *request =
[[IMAVideoStitcherLiveStreamRequest alloc] initWithLiveStreamEventID:kLiveConfigId
region:kLocation
projectNumber:kProjectNumber
OAuthToken:kOAuthToken
networkCode:kNetworkCode
customAssetKey:kCustomAssetKey
adDisplayContainer:self.adDisplayContainer
videoDisplay:self.videoDisplay
userContext:nil,
videoStitcherSessionOptions:nil];
[self.adsLoader requestStreamWithRequest:request];
}
(Opsional) Menambahkan opsi sesi streaming
Sesuaikan permintaan streaming dengan menambahkan opsi sesi untuk mengganti konfigurasi Cloud Video Stitcher API default dengan mengisi parameter videoStitcherSessionOptions
di IMAVideoStitcherLiveStreamRequest.
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 tampilan 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\": {"
" \"bitrateOrder\": \"ascending\""
" }"
"}";
// 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 *streamRequest =
[[IMAVideoStitcherLiveStreamRequest alloc] initWithLiveStreamEventID:kLiveConfigID
region:kLocation
projectNumber:kProjectNumber
OAuthToken:kOAuthToken
networkCode:kNetworkCode
customAssetKey:kCustomAssetKey
adDisplayContainer:adDisplayContainer
videoDisplay:imaVideoDisplay
userContext:nil
videoStitcherSessionOptions:sessionOptions];
[self.adsLoader requestStreamWithRequest:streamRequest];
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": {
"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 streamRequest = IMAVideoStitcherLiveStreamRequest(
liveStreamEventID:ViewController.liveConfigID
region:ViewController.location
projectNumber:ViewController.projectNumber
OAuthToken:ViewController.oAuthToken
networkCode:ViewController.networkCode
customAssetKey:ViewController.customAssetKey
adDisplayContainer:adDisplayContainer
videoDisplay:imaVideoDisplay
userContext:nil
videoStitcherSessionOptions:sessionOptions)
adsLoader?.requestStream(with: streamRequest)
Jalankan project, lalu Anda dapat meminta dan memutar live stream 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 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 diputar segera setelah jeda iklan disisipkan.
Pembersihan
Setelah Anda berhasil menghosting live stream menggunakan Google Cloud Video Stitcher API dan memintanya menggunakan IMA DAI SDK untuk tvOS, Anda harus membersihkan resource penayangan.
Ikuti panduan pembersihan live stream untuk menghapus aset dan resource yang tidak diperlukan.