Mit der Google Cloud Video Stitcher API registrierte Livestreams abspielen
In diesem Leitfaden wird gezeigt, wie du mit dem IMA DAI SDK für tvOS einen Livestream für ein Ereignis anforderst und abspielst, das bei der Google Cloud Video Stitcher API registriert ist. Außerdem erfährst du, wie du während der Wiedergabe eine Werbeunterbrechung einfügst.
In diesem Leitfaden wird das einfache Beispiel aus dem Einstiegsleitfaden für die dynamische Anzeigenbereitstellung in IMA erweitert.
Informationen zur Einbindung in andere Plattformen oder zur Verwendung der clientseitigen IMA SDKs finden Sie unter Interactive Media Ads SDKs.
Wenn Sie sich eine fertige Beispielintegration ansehen oder nachvollziehen möchten, laden Sie das Beispiel für den Cloud-Video-Stitcher für Objective-C oder Swift herunter.
Google Cloud-Projekt einrichten
Gib die folgenden Variablen für die Verwendung im IMA SDK ein:
- Standort
- Die Google Cloud-Region, in der Ihre Livekonfiguration erstellt wurde:
LOCATION
- Projektnummer
- Die Google Cloud-Projektnummer, in der die Video Stitcher API verwendet wird:
PROJECT_NUMBER
- OAuth-Token
Das kurzlebige OAuth-Token eines Dienstkontos mit der Nutzerrolle „Video Stitcher“:
OAUTH_TOKEN
Weitere Informationen zum Erstellen kurzlebiger Anmeldedaten für Dienstkonten Das OAuth-Token kann für mehrere Anfragen wiederverwendet werden, solange es nicht abgelaufen ist.
- Netzwerkcode
Der Ad Manager-Netzwerkcode zum Anfordern von Anzeigen:
NETWORK_CODE
- ID der Live-Konfiguration
- Die Live-Konfigurations-ID, die du beim Erstellen des Livestreamereignisses angegeben hast:
LIVE_CONFIG_ID
- Benutzerdefinierter Asset-Schlüssel
- Der benutzerdefinierte Ad Manager-Asset-Schlüssel, der beim Erstellen einer Konfiguration für ein Livestream-Ereignis mit der Video Stitcher API generiert wurde:
CUSTOM_ASSET_KEY
Einfaches Beispiel herunterladen und vorbereiten
Laden Sie die IMA DAI-Beispiele für tvOS herunter und extrahieren Sie das einfache Beispiel in einen neuen Ordner. Dieses Beispiel ist ein Xcode-Projekt, in dem das IMA SDK über Cocoapods geladen wird.
Damit das Beispiel ausgeführt werden kann, muss CocoaPods installiert sein. Öffnen Sie dann den Ordner des einfachen Beispiels im Terminal und führen Sie den folgenden Befehl aus:
pod install --repo-update
Nach Ausführung des Befehls wird im Projektordner eine Datei mit dem Namen BasicExample.xcworkspace
angezeigt. Öffnen Sie diese Datei in Xcode und führen Sie das Beispiel aus, um sicherzustellen, dass das Testvideo und die Anzeigen wie erwartet wiedergegeben werden.
Livestream anfordern
Wenn du den Beispielstream durch deinen Livestream ersetzen möchtest, musst du die IMAVideoStitcherLiveStreamRequest
-Klasse verwenden, die automatisch eine Anzeigensitzung mit Google Ad Manager erstellt. Über die Google Ad Manager-Benutzeroberfläche können Sie die generierten dynamischen Anzeigenaufrufe finden, um sie zu überwachen und zu beheben.
Im vorhandenen Beispiel findest du Beispiele für das Anfordern eines VOD-Streams oder Livestreams von den DAI-Servern von Google. Damit das Beispiel mit der Google Cloud Video Stitcher API funktioniert, müssen Sie die aktuelle requestStream
-Funktion durch eine Funktion ersetzen, die die IMAVideoStitcherLiveStreamRequest
-Klasse verwendet:
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];
}
(Optional) Optionen für die Streamingsitzung hinzufügen
Du kannst deine Streamanfrage anpassen, indem du Sitzungsoptionen hinzufügst, um die Standardkonfiguration der Cloud Video Stitcher API zu überschreiben. Gib dazu den Parameter videoStitcherSessionOptions
in deine IMAVideoStitcherLiveStreamRequest ein.
Wenn du eine nicht erkannte Option angibst, antwortet die Cloud Video Stitcher API mit einem HTTP-Fehler 400. Weitere Informationen finden Sie in der Anleitung zur Fehlerbehebung.
Du kannst die Manifest-Optionen beispielsweise mit dem folgenden Code-Snippet überschreiben. Dabei werden zwei Streammanifeste mit Darstellungen angefordert, die von der niedrigsten bis zur höchsten Bitrate sortiert sind.
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)
Führen Sie das Projekt aus und fordern Sie dann Ihren benutzerdefinierten Livestream an.
Werbeunterbrechung einfügen
Die Google Cloud Video Stitcher API fügt für jede Werbeunterbrechung Anzeigen ein, die aus dem Anzeigen-Tag abgerufen wurden. Werbeunterbrechungen werden im Manifest mit Anzeigenmarkierungen gekennzeichnet. Anzeigenmarkierungen werden vom Livestream-Encoder eingefügt.
Wenn du deinen eigenen Livestream verwendest, musst du die Anzeigenmarkierung einfügen. Weitere Informationen zu den unterstützten HLS- und DASH-Anzeigenmarkierungen findest du in der Dokumentation zu Anzeigenmarkierungen.
Wenn du einen Livestream mit der Google Cloud Livestream API erstellt hast, füge ein Kanalereignis für Werbeunterbrechungen ein.
Die Anzeige wird sofort nach dem Einfügen der Werbeunterbrechung wiedergegeben.
Bereinigen
Nachdem du einen Livestream mit der Google Cloud Video Stitcher API gehostet und über das IMA DAI SDK für tvOS angefordert hast, solltest du alle Bereitstellungsressourcen bereinigen.
Folge der Anleitung unter Livestreams bereinigen, um alle nicht benötigten Ressourcen und Assets zu entfernen.