Mit der Google Cloud Video Stitcher API registrierte Livestreams abspielen
In dieser Anleitung wird gezeigt, wie Sie mit dem IMA DAI SDK für iOS einen Livestream für ein Ereignis anfordern und abspielen, das mit der Google Cloud Video Stitcher API registriert wurde, und wie Sie während der Wiedergabe eine Werbeunterbrechung einfügen.
Diese Anleitung baut auf dem grundlegenden Beispiel aus der Kurzanleitung für IMA DAI auf.
Informationen zur Integration in andere Plattformen oder zur Verwendung der clientseitigen IMA-SDKs finden Sie unter Interactive Media Ads SDKs.
Wenn Sie sich eine vollständige Beispielintegration ansehen oder ihr folgen möchten, laden Sie das Cloud Video Stitcher-Beispiel für Objective-C oder Swift herunter.
Google Cloud-Projekt einrichten
Geben Sie die folgenden Variablen für die Verwendung im IMA SDK ein:
- Standort
- Die Google Cloud-Region, in der Ihre Live-Konfiguration erstellt wurde:
LOCATION - Projektnummer
- Die Google Cloud-Projektnummer für die Video Stitcher API:
PROJECT_NUMBER - OAuth-Token
Das kurzlebige OAuth-Token eines Dienstkontos mit der Nutzerrolle „Video Stitcher“:
OAUTH_TOKEN
Weitere Informationen zum Erstellen von kurzlebigen 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
- Live-Konfigurations-ID
- Die Live-Konfigurations-ID, die Sie beim Erstellen des Livestreamereignisses angegeben haben:
LIVE_CONFIG_ID - Benutzerdefinierter Asset-Schlüssel
- Der benutzerdefinierte Ad Manager-Assetschlüssel, der beim Erstellen einer Konfiguration für ein Livestream-Event mit der Video Stitcher API generiert wird:
CUSTOM_ASSET_KEY
- Nutzerkontext
- Der Nutzerkontext für Tracking-Anfragen. Kann
nilsein. In dieser Anleitung wird standardmäßignilverwendet.
Einfaches Beispiel herunterladen und vorbereiten
Laden Sie die IMA DAI-Beispiele für iOS herunter und extrahieren Sie das Basic Example in einen neuen Ordner. Dieses Beispiel ist ein Xcode-Projekt, in dem das IMA SDK mit 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-updateNachdem der Befehl ausgeführt wurde, wird in Ihrem Projektordner eine Datei mit dem Namen BasicExample.xcworkspace angezeigt. Öffnen Sie diese Datei in Xcode und führen Sie das Beispiel aus, um zu prüfen, ob das Testvideo und die Anzeigen wie erwartet wiedergegeben werden.
Livestream anfordern
Wenn Sie den Beispielstream durch Ihren Livestream ersetzen möchten, müssen Sie die Klasse IMAVideoStitcherLiveStreamRequest verwenden, mit der automatisch eine Anzeigensitzung mit Google Ad Manager erstellt wird. Sie können die Google Ad Manager-Benutzeroberfläche verwenden, um die generierten DAI-Sitzungen zu finden und sie zu Monitoring- und Debugging-Zwecken zu nutzen.
Im vorhandenen Beispiel gibt es Beispiele für das Anfordern eines VOD-Streams oder eines 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>
/// 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];
}
(Optional) Optionen für die Streaming-Sitzung hinzufügen
Sie können Ihre Streamanfrage anpassen, indem Sie Sitzungsoptionen hinzufügen, um die Standardkonfiguration der Cloud Video Stitcher API zu überschreiben. Dazu müssen Sie den Parameter videoStitcherSessionOptions in Ihrer IMAVideoStitcherLiveStreamRequest ausfüllen.
Wenn Sie eine nicht erkannte Option angeben, antwortet die Cloud Video Stitcher API mit einem HTTP-Fehler 400. Weitere Informationen finden Sie im Leitfaden zur Fehlerbehebung.
Mit dem folgenden Code-Snippet können Sie beispielsweise die Manifestoptionen überschreiben. Es werden zwei Streammanifeste mit Renditionen angefordert, die von der niedrigsten 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. Anschließend können Sie Ihren benutzerdefinierten Livestream anfordern und abspielen.
Werbeunterbrechung einfügen
Mit der Google Cloud Video Stitching-Tool API werden Anzeigen eingefügt, die für jede Werbeunterbrechung über das Anzeigen-Tag abgerufen werden. Werbeunterbrechungen werden im Manifest mit Werbemarkierungen gekennzeichnet. Anzeigenmarkierungen werden vom Livestream-Encoder eingefügt.
Wenn Sie Ihren eigenen Livestream verwenden, müssen Sie die Anzeigenmarkierung einfügen. Weitere Informationen zu den unterstützten HLS- und DASH-Anzeigenmarkierungen finden Sie in der Dokumentation zu Anzeigenmarkierungen.
Wenn du einen Livestream mit der Google Cloud Livestream API erstellt hast, füge ein Channel-Event für eine Werbeunterbrechung ein.
Die Anzeige wird direkt nach dem Einfügen der Werbeunterbrechung abgespielt.
Bereinigen
Nachdem Sie einen Livestream mit der Google Cloud Video Stitcher API gehostet und ihn mit dem IMA DAI SDK für iOS angefordert haben, ist es wichtig, alle Bereitstellungsressourcen zu bereinigen.
Folge der Anleitung zum Bereinigen von Livestreams, um unnötige Ressourcen und Assets zu entfernen.