Livestreams abspielen, die bei der Google Cloud Video Stitcher API registriert sind
In diesem Leitfaden erfahren Sie, wie Sie das IMA DAI SDK für zum Anfordern und Abspielen eines Livestream für ein Ereignis, das für Google Cloud Video Stitcher registriert ist API und erklärt, wie Sie während der Wiedergabe eine Werbeunterbrechung einfügen.
Dieser Leitfaden erweitert das grundlegende Beispiel aus dem Abschnitt Erste Schritte Leitfaden für die dynamische Anzeigenbereitstellung mit IMA-Werten.
Informationen zur Integration mit anderen Plattformen oder zur Verwendung des IMA Informationen zu clientseitigen SDKs finden Sie unter Interactive Media Ads SDKs.
Google Cloud-Projekt einrichten
Geben Sie die folgenden Variablen zur Verwendung im IMA SDK ein:
- Standort
- Google Cloud-Region
in dem die Live-Konfiguration erstellt wurde:
LOCATION
- Projektnummer
- Die Google Cloud-Projektnummer, für die die Video Stitcher API verwendet wird:
PROJECT_NUMBER
- OAuth-Token
Das kurzlebige OAuth-Token eines Dienstkontos mit dem Video Stitcher-Nutzer Rolle:
OAUTH_TOKEN
Weitere Informationen zu Erstellen kurzlebiger Anmeldedaten für einen Dienst Konten Das OAuth-Token kann für mehrere Anfragen wiederverwendet werden, solange abgelaufen.
- Netzwerkcode
Ad Manager-Netzwerkcode für die Anzeigenanfragen:
NETWORK_CODE
- Live-Konfigurations-ID
- Die Live-Konfigurations-ID, die Sie beim Erstellen Ihrer Livestream-Veranstaltung angegeben haben:
LIVE_CONFIG_ID
- Benutzerdefinierter Asset-Schlüssel
- Der benutzerdefinierte Asset-Schlüssel für Ad Manager, der beim Erstellen eines
Konfiguration für eine Livestream-Veranstaltung
mit der Video Stitcher API:
CUSTOM_ASSET_KEY
Entwicklungsumgebung konfigurieren
In den IMA-Beispielanwendungen werden nur HLS-Streamanfragen dargestellt. Du kannst weiterhin DASH verwenden
streamt die VideoStitcherLiveStreamRequest
-Klasse. Wann?
Einrichten Ihres DASH-kompatiblen Players müssen Sie einen Listener für Ihren
Fortschrittsereignisse des Videoplayers, über die die Metadaten des Videos
StreamManager.processMetadata()
.
Diese Funktion verwendet drei Parameter:
type
: Ein String, der für HLS-Streams auf'ID3'
festgelegt werden muss.'urn:google:dai:2018'
für DASH-Streams.data
: Bei DASH-Ereignisnachrichten ist dies der Nachrichtendatenstring.timestamp
: Eine Zahl, die für die Startzeit der Ereignisnachricht für DASH angegeben wird. Streams.
Sende die Metadaten so schnell und so oft, wie deine Spielerereignisse liefern können. Wenn keine Metadaten fehlen oder nicht korrekt sind, löst das IMA DAI SDK möglicherweise keine Anzeigenereignisse aus. die zu falsch gemeldeten Anzeigenereignissen führen.
Laden Sie die Beispiele für die dynamische Anzeigenbereitstellung von IMA für HTML5 und extrahieren Sie den Einfaches HLS.js-Beispiel in einen neuen Ordner Dieses Beispiel ist eine Web-App, zu Testzwecken lokal hosten.
Um das Beispiel lokal zu hosten, wechseln Sie zum neuen Ordner und führen Sie folgenden Befehl aus: Python-Befehl zum Starten eines Webservers:
python3 -m http.server 8000
http.server
ist nur in Python 3.x verfügbar. Sie können einen beliebigen anderen Webserver verwenden,
wie Apache HTTP Server
oder Node.js.
Öffne einen Webbrowser und rufe localhost:8000
auf, um einen Videoplayer aufzurufen.
Dein Browser muss HLS.js unterstützen.
Bibliothek.
Wenn alles korrekt funktioniert, klicke im Video auf die Schaltfläche Wiedergabe. Spieler beginnt den Kurzfilm „Tears of Steel“ nach einer kurzen Anzeige. Dieser Inhalt ist über einen VOD-Stream (Video-on-Demand) ausgeliefert.
Livestream anfordern
Wenn du den Beispiel-VOD-Stream durch deinen Livestream ersetzen möchtest, verwende die Methode
VideoStitcherLiveStreamRequest
die automatisch eine Anzeigensitzung mit Google Ad Manager erstellt. Sie können
Verwenden Sie die Google Ad Manager-Benutzeroberfläche, um die generierten Sitzungen für die dynamische Anzeigenbereitstellung zu finden, um sie für Monitoring und Fehlerbehebung zu nutzen.
Im vorhandenen Beispiel gibt es Funktionen zum Anfordern eines VOD-Streams oder eines
. Damit es mit der Google Cloud Video Stitcher API funktioniert, benötigen Sie
um eine neue Funktion hinzuzufügen, die eine
VideoStitcherLiveStreamRequest
-Objekt enthält.
Beispiel:
// StreamManager which will be used to request ad-enabled streams.
let streamManager;
...
function initPlayer() {
videoElement = document.getElementById('video');
adUiElement = document.getElementById('adUi');
streamManager = new google.ima.dai.api.StreamManager(
videoElement,
adUiElement
);
streamManager.addEventListener(
[
google.ima.dai.api.StreamEvent.Type.LOADED,
google.ima.dai.api.StreamEvent.Type.ERROR,
google.ima.dai.api.StreamEvent.Type.AD_BREAK_STARTED,
google.ima.dai.api.StreamEvent.Type.AD_BREAK_ENDED
],
onStreamEvent, false);
hls.on(Hls.Events.FRAG_PARSING_METADATA, function(event, data) {
if (streamManager && data) {
// For each ID3 tag in our metadata, we pass in the type - ID3, the
// tag data (a byte array), and the presentation timestamp (PTS).
data.samples.forEach(function(sample) {
streamManager.processMetadata('ID3', sample.data, sample.pts);
});
}
});
videoElement.addEventListener('pause', () => {
playButton.style.display = 'block';
});
playButton.addEventListener('click', initiatePlayback);
}
function initiatePlayback() {
requestVideoStitcherStream();
playButton.style.display = "none";
playButton.removeEventListener('click', initiatePlayback);
playButton.addEventListener('click', resumePlayback);
}
...
function requestVideoStitcherStream() {
const streamRequest = new google.ima.dai.api.VideoStitcherLiveStreamRequest();
streamRequest.liveStreamEventId = 'LIVE_CONFIG_ID';
streamRequest.region = 'LOCATION';
streamRequest.projectNumber = 'PROJECT_NUMBER';
streamRequest.oAuthToken = 'OAUTH_TOKEN';
streamRequest.networkCode = 'NETWORK_CODE';
streamRequest.customAssetKey = 'CUSTOM_ASSET_KEY';
streamManager.requestStream(streamRequest);
}
Für lokale Tests gilt: Wenn sich die Livestream-Dateien in einem Cloud Storage-
und müssen dann Aktivieren
CORS für den Ursprung
http://localhost:8000
Laden Sie die Seite neu. Anschließend kannst du benutzerdefinierte Livestreams anfordern und abspielen.
Optional: Optionen für Streamingsitzungen hinzufügen
Passen Sie Ihre Streamanfrage an, indem Sie Sitzungsoptionen hinzufügen, um die Standardeinstellung zu überschreiben
Konfiguration der Cloud Video Stitcher API mithilfe von
VideoStitcherLiveStreamRequest.videoStitcherSessionOptions
.
Wenn Sie eine unbekannte Option angeben,
In der Video Stitcher API wird ein HTTP 400-Fehler zurückgegeben. Informationen hierzu finden Sie in der
Anleitung zur Fehlerbehebung
um Unterstützung zu erhalten.
Beispielsweise können Sie den Parameter Manifestoptionen durch das folgende Code-Snippet, das zwei Streammanifeste mit Wiedergaben von der niedrigsten zur höchsten Bitrate sortiert.
...
streamRequest.videoStitcherSessionOptions = {
"manifestOptions": {
"includeRenditions": [
{"bitrateBps": 3000, "codecs": "hvc1.1.4.L126.B0, mp4a.40.2"},
{"bitrateBps": 2000, "codecs": "avc1.64001f, mp4a.40.2"},
],
"bitrateOrder": "ascending"
}
};
streamManager.requestStream(streamRequest);
Werbeunterbrechung einfügen
Die Google Cloud Video Stitcher API fügt die aus dem Anzeigen-Tag abgerufenen Anzeigen für jedes Werbeunterbrechung. Werbeunterbrechungen werden im Manifest durch Anzeigenmarkierungen gekennzeichnet. Anzeigenmarkierungen sind die vom Livestreamencoder eingefügt wurden.
Wenn Sie Ihren eigenen Livestream verwenden, müssen Sie die Anzeigenmarkierung einfügen. Für Weitere Informationen zu den unterstützten HLS- und DASH-Anzeigenmarkierungen finden Sie in der Dokumentation zu Anzeigenmarkierungen.
Wenn Sie einen Livestream mit der Google Cloud Livestream API erstellt haben, ein Kanalereignis für eine Werbeunterbrechung einfügen.
Die Anzeige wird sofort nach dem Einfügen der Werbeunterbrechung wiedergegeben.
Bereinigen
Du hast jetzt erfolgreich einen Livestream über die Google Cloud Video Stitcher API und über das IMA DAI SDK angefordert. für HTML5 ist es wichtig, alle Auslieferungen Ressourcen.
Folgen Sie Livestream bereinigen um nicht benötigte Ressourcen und Assets zu entfernen.
Verwenden Sie schließlich im Terminalfenster, in dem Sie den Python 3-Webserver gestartet haben, den Befehl
den Befehl ctrl+C
, um den lokalen Server zu beenden.