הפעלה של שידורים חיים שנרשמו באמצעות Google Cloud Video Stitcher API
במדריך הזה מוסבר איך להשתמש ב-IMA DAI SDK ל-iOS כדי לשלוח בקשה לשידור חי של אירוע שנרשם ב-Google Cloud Video Stitcher API ולהפעיל אותו, ואיך להוסיף הפסקה למודעה במהלך ההפעלה.
המדריך הזה מרחיב את הדוגמה הבסיסית מהמדריך למתחילים בנושא IMA DAI.
למידע על שילוב עם פלטפורמות אחרות או על שימוש ב-IMA SDKs בצד הלקוח, אפשר לעיין במאמר בנושא Interactive Media Ads SDKs.
אם רוצים לראות דוגמה לשילוב מלא או לפעול לפיה, אפשר להוריד את הדוגמה של Cloud Video Stitcher ל-Objective-C או ל-Swift.
הגדרת פרויקט ב-Google Cloud
מזינים את המשתנים הבאים לשימוש ב-IMA SDK:
- מיקום
- האזור ב-Google Cloud שבו נוצרת ההגדרה הפעילה:
LOCATION - מספר הפרויקט
- מספר הפרויקט ב-Google Cloud שבו נעשה שימוש ב-Video Stitcher API:
PROJECT_NUMBER - טוקן OAuth
אסימון OAuth לטווח קצר של חשבון שירות עם תפקיד המשתמש Video Stitcher:
OAUTH_TOKEN
מידע נוסף על יצירת פרטי כניסה לטווח קצר לחשבונות שירות אפשר לעשות שימוש חוזר בטוקן OAuth בכמה בקשות, כל עוד תוקף הטוקן לא פג.
- הקוד של הרשת
קוד הרשת ב-Ad Manager לבקשת הצגת מודעות:
NETWORK_CODE
- מזהה ההגדרה של השידור החי
- מזהה ההגדרה של השידור החי שציינתם כשייצרתם את האירוע בשידור חי:
LIVE_CONFIG_ID - מפתח של נכס מותאם אישית
- מפתח הנכס המותאם אישית של Ad Manager שנוצר במהלך יצירת הגדרה לאירוע בשידור חי באמצעות Video Stitcher API:
CUSTOM_ASSET_KEY
- הקשר של המשתמש
- הקשר של המשתמש למעקב אחרי בקשות. יכול להיות
nil. ברירת המחדל היאnilבמדריך הזה.
הורדה והכנה של הדוגמה הבסיסית
מורידים את הדוגמאות של IMA DAI ל-iOS ומחלצים את הדוגמה הבסיסית לתיקייה חדשה. הדוגמה הזו היא פרויקט Xcode שמסתמך על Cocoapods לטעינת IMA SDK.
כדי להכין את הדוגמה להפעלה, מוודאים ש-CocoaPods מותקן, ואז פותחים את התיקייה של הדוגמה הבסיסית בטרמינל ומריצים את הפקודה הבאה:
pod install --repo-updateאחרי שהפקודה הזו מסתיימת, קובץ בשם BasicExample.xcworkspace מופיע בתיקיית הפרויקט. פותחים את הקובץ הזה ב-Xcode ומריצים את הדוגמה כדי לוודא שסרטון הבדיקה והמודעות מוצגים כמצופה.
בקשה לשידור חי
כדי להחליף את זרם הדוגמה בשידור החי שלכם, צריך להשתמש במחלקה IMAVideoStitcherLiveStreamRequest שיוצרת באופן אוטומטי סשן של מודעות ב-Google Ad Manager. אתם יכולים להשתמש בממשק המשתמש של Google Ad Manager כדי לאתר את סשנים של DAI שנוצרו למטרות מעקב וניפוי באגים.
בדוגמה הקיימת יש בקשות לשידור VOD או לשידור חי משרתי DAI של Google. כדי שהדוגמה תפעל עם Google Cloud Video Stitcher API, צריך להחליף את הפונקציה הנוכחית requestStream בפונקציה שמשתמשת במחלקה 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 *streamRequest =
[[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:streamRequest];
}
(אופציונלי) הוספת אפשרויות של סשן סטרימינג
כדי להתאים אישית את בקשת הסטרימינג, מוסיפים אפשרויות הפעלה כדי לבטל את הגדרת ברירת המחדל של Cloud Video Stitcher API. לשם כך, מאכלסים את הפרמטר videoStitcherSessionOptions ב-IMAVideoStitcherLiveStreamRequest.
אם תספקו אפשרות לא מזוהה, Cloud Video Stitcher API יגיב עם שגיאת HTTP 400. אפשר לקבל עזרה במדריך לפתרון בעיות.
לדוגמה, אפשר לשנות את אפשרויות המניפסט באמצעות קטע הקוד הבא, ששולח בקשה לשני מניפסטים של סטרימינג עם רכיבי עיבוד שמוזמנים משיעור העברת הנתונים הנמוך ביותר לגבוה ביותר.
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)
מריצים את הפרויקט, ואז אפשר לבקש להפעיל את השידור החי המותאם אישית.
הוספת הפסקה למודעות
ממשק Google Cloud Video Stitcher API מטמיע מודעות שאוחזרו מתג המודעה עבור כל הפסקה למודעה. הפסקות הפרסום מסומנות במניפסט באמצעות סמני מודעות. סמני המודעות מוכנסים על ידי המקודד של השידור החי.
אם אתם משתמשים בשידור חי משלכם, אתם צריכים להוסיף את סמן המודעה. מידע נוסף על סמני המודעות הנתמכים בפורמטים HLS ו-DASH זמין במאמר בנושא סמני מודעות.
אם יצרתם שידור חי באמצעות Google Cloud Livestream API, הוסיפו אירוע של הפסקה למודעה בערוץ.
המודעה מוצגת מיד אחרי שההפסקה למודעות מוכנסת.
הסרת המשאבים
אחרי שסיימתם לארח שידור חי באמצעות Google Cloud Video Stitcher API ולשלוח בקשה לשידור באמצעות IMA DAI SDK ל-iOS, חשוב לנקות את כל משאבי ההצגה.
כדי להסיר משאבים ונכסים מיותרים, פועלים לפי המדריך בנושא מחיקת משאבים של שידורים חיים.