Überblick
SSAI Ermöglicht die Anzeige von Anzeigen während eines Live-Streaming-Ereignisses zu bestimmten Zeiten. Zu den Hauptmerkmalen gehören:
- Fügen Sie Anzeigen mit Cue-Points ein, die Sie von Ihrem Encoder gesendet haben, oder erstellen Sie einen sofortigen Cue-Point mit dem Live API
- Nehmen Sie "Slate"-Assets auf, um ungenutzte Anzeigenzeit zu füllen
- Vermeiden Sie Werbeblocker mit Anzeigen, die serverseitig in den Livestream eingebunden werden
Gehen Sie wie folgt vor, um einen Livestream mit serverseitigen Anzeigen zu erstellen:
- Lesen Sie die allgemeinen Informationen zur Live-API
- Erstellen Sie eine Live-Anzeigenkonfiguration. Sie können dies auch in Video Cloud Studio. Weitere Informationen zur Verwaltung Ihrer Anzeigenkonfigurationen mit der Live-API finden Sie in den folgenden Abschnitten.
- Slate-Assets erstellen. Wenn Sie eine Benutzeroberfläche bevorzugen, können Sie Schiefertafeln in Studio verwalten.
- Optional: Cue-Points und Werbe-Beacons einfügen.
- Jetzt bist du bereit zu Erstellen Sie einen Live-Stream mit der Live-API. Wenn Sie Studio bevorzugen, können Sie serverseitige Anzeigen im Live-Modul implementieren
Weitere Informationen zu benutzerdefinierten Headern, Anzeigenkonfigurationsvariablen und der Verwendung von DFP und Anzeigenmakros finden Sie im Rest dieses Dokuments.
Allgemeine Information
Die folgenden Informationen beziehen sich auf alle Live-APIs mit SSAI-Anfragen.
Basis-URL
Die Basis-URL für die Live-API mit SSAI lautet:
https://api.bcovlive.io/v1/ssai
Authentifizierung
Die Authentifizierung für Anfragen erfordert einen Header mit einem API-Schlüssel:
X-API-KEY: your API KEY
Wenden Sie sich an Ihren Account Manager, um einen mit Ihrem Account verknüpften API-Schlüssel zu erhalten.
Erstellen Sie eine Anzeigenkonfiguration
Um eine neue Anzeigenkonfiguration zu erstellen, senden Sie eine POST
wie folgt anfordern:
Methode | POST |
---|---|
URL | https://api.bcovlive.io/v1/ssai/applications |
Header | X-API-KEY: your API KEY |
Beispielanfragetext
{
"application_ad_configuration": {
"ad_configuration_description": "Human readable description of the configuration",
"ad_configuration_expected_response_type": "Dfp, Vast or SmartXML",
"ad_configuration_headers": {
"X-Custom-Header-Rand": "{{random.int32}}",
"X-VIDEOPLAZA-FORWARDED-FOR": "{{client.ipaddress}}"
},
"ad_configuration_headers_for_impressions": false,
"ad_configuration_strategy": "SingleAdResponse or MultipleAdResponse",
"ad_configuration_transforms": [
{
"xpath": "/",
"xslt": "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:Det=\"http://Det.com\"><xsl:output omit-xml-declaration=\"yes\"/><xsl:template match=\"node()|@*\"><xsl:copy><xsl:apply-templates select=\"node()|@*\"/></xsl:copy></xsl:template></xsl:stylesheet>"
}
],
"ad_configuration_url_format": "https://ad-provider-host.com/path/to/ad-handler?ip={{client.ipaddress}}&num={{random.int32}}&ses={{session.session_id}}"
},
"application_description": "Human readable description of the ad application",
"account_id": "User's Account ID [Optional]"
}
Beispielantwort
{
"application": {
"account_id": "User Account ID",
"application_description": "Human readable description of the ad application",
"application_ad_configuration": {
"ad_configuration_description": "Human readable description of the configuration",
"ad_configuration_expected_response_type": "Dfp | Vast | SmartXML",
"ad_configuration_headers": {
"X-Custom-Header-Rand": "{{random.int32}}",
"X-VIDEOPLAZA-FORWARDED-FOR": "{{client.ipaddress}}"
},
"ad_configuration_headers_for_impressions": false,
"ad_configuration_strategy": "SingleAdResponse | MultipleAdResponse",
"ad_configuration_transforms": [
{
"xpath": "/",
"xslt": "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:Det=\"http://Det.com\"><xsl:output omit-xml-declaration=\"yes\"/><xsl:template match=\"node()|@*\"><xsl:copy><xsl:apply-templates select=\"node()|@*\"/></xsl:copy></xsl:template></xsl:stylesheet>"
}
],
"ad_configuration_url_format": "https://ad-provider-host.com/path/to/ad-handler?ip={{client.ipaddress}}&num={{random.int32}}&ses={{session.session_id}}"
},
"application_id": "Application ID"
},
"inserted": true
}
Aktualisieren einer Anzeigenkonfiguration
Das Aktualisieren einer Anzeigenkonfiguration ist dem Erstellen einer Anzeigenkonfiguration sehr ähnlich. Mach ein PUT
wie folgt anfordern:
Methode | PUT |
---|---|
URL | https://api.bcovlive.io/v1/ssai/applications/application/Application_ID |
Header | X-API-KEY: your API KEY |
Beispielanfragetext
{
"application_ad_configuration": {
"ad_configuration_description": "Some Updated Description Value",
"ad_configuration_expected_response_type": "Dfp or Vast or SmartXML,
"ad_configuration_headers": {
"X-Custom-Header-Rand": "{{random.int32}}",
"X-VIDEOPLAZA-FORWARDED-FOR": "{{client.ipaddress}}"
},
"ad_configuration_headers_for_impressions": false,
"ad_configuration_strategy": "SingleAdResponse or MultipleAdResponse",
"ad_configuration_transforms": [
{
"xpath": "/",
"xslt": "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:Det=\"http://Det.com\"><xsl:output omit-xml-declaration=\"yes\"/><xsl:template match=\"node()|@*\"><xsl:copy><xsl:apply-templates select=\"node()|@*\"/></xsl:copy></xsl:template></xsl:stylesheet>"
}
],
"ad_configuration_url_format": "https://updated-ad-provider-host.com/path/to/ad-handler?ip={{client.ipaddress}}&num={{random.int32}}&ses={{session.session_id}}"
},
"application_description": "Human readable description of the ad application",
"account_id": "User's Account ID [Optional]"
}
Beispielantwort
{
"account_id": "User Account ID",
"application_description": "Human readable description of the ad application",
"application_ad_configuration": {
"ad_configuration_description": "Some Updated Description Value",
"ad_configuration_expected_response_type": "Dfp | Vast | SmartXML",
"ad_configuration_headers": {
"X-Custom-Header-Rand": "{{random.int32}}",
"X-VIDEOPLAZA-FORWARDED-FOR": "{{client.ipaddress}}"
},
"ad_configuration_headers_for_impressions": false,
"ad_configuration_strategy": "SingleAdResponse | MultipleAdResponse",
"ad_configuration_transforms": [
{
"xpath": "/",
"xslt": "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:Det=\"http://Det.com\"><xsl:output omit-xml-declaration=\"yes\"/><xsl:template match=\"node()|@*\"><xsl:copy><xsl:apply-templates select=\"node()|@*\"/></xsl:copy></xsl:template></xsl:stylesheet>"
}
],
"ad_configuration_url_format": "https://updated-ad-provider-host.com/path/to/ad-handler?ip={{client.ipaddress}}&num={{random.int32}}&ses={{session.session_id}}"
},
"application_id": "Application ID"
}
Alle Anzeigenkonfigurationen abrufen
Um alle Anzeigenkonfigurationen für ein Konto abzurufen, senden Sie a GET
wie folgt anfordern:
Methode | GET |
---|---|
URL | https://api.bcovlive.io/v1/ssai/applications/account/Account_ID |
Header | X-API-KEY: your API KEY |
Beispielantwort
[
{
"application_id": "Application_ID_1",
"application_description": "DFP Single Midroll",
"application_ad_configuration": {
"ad_configuration_description": "DFP Test Config Single Midroll",
"ad_configuration_strategy": "MultipleAdResponse",
"ad_configuration_transforms": [],
"ad_configuration_url_format": "https://ad-provider-host.com/path/to/ad-handler",
"ad_configuration_expected_response_type": "Dfp"
},
"account_id": "Account_ID"
},
{
"application_id": "Application_ID_2",
"application_description": "Test DFP Single Midroll"
"application_ad_configuration": {
"ad_configuration_description": "DFP Test Config Single Midroll",
"ad_configuration_strategy": "MultipleAdResponse",
"ad_configuration_transforms": [
{
"xslt": "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:Det=\"http://Det.com\"><xsl:output omit-xml-declaration=\"yes\"/><xsl:template match=\"node()|@*\"><xsl:copy><xsl:apply-templates select=\"node()|@*\"/></xsl:copy></xsl:template></xsl:stylesheet>",
"xpath": "/"
}
],
"ad_configuration_url_format": "https://ad-provider-host.com/path/to/ad-handler?ip={{client.ipaddress}}&num={{random.int32}}&ses={{session.session_id}}",
"ad_configuration_expected_response_type": "Dfp"
},
"account_id": "Account_ID"
}
]
Anzeigenkonfiguration abrufen
Sie können eine bestimmte Anzeigenkonfiguration auch über ihre application_id
durch Senden einer GET
wie folgt anfordern:
Methode | GET |
---|---|
URL | https://api.bcovlive.io/v1/ssai/applications/application/Application_ID |
Header | X-API-KEY: your API KEY |
Beispielantwort
{
"application_id": "Application_ID",
"application_description": "Test DFP Single Midroll",
"application_ad_configuration": {
"ad_configuration_description": "DFP Test Config Single Midroll",
"ad_configuration_strategy": "MultipleAdResponse",
"ad_configuration_transforms": [
{
"xslt": "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:Det=\"http://Det.com\"><xsl:output omit-xml-declaration=\"yes\"/><xsl:template match=\"node()|@*\"><xsl:copy><xsl:apply-templates select=\"node()|@*\"/></xsl:copy></xsl:template></xsl:stylesheet>",
"xpath": "/"
}
],
"ad_configuration_url_format": "https://ad-provider-host.com/path/to/ad-handler?ip={{client.ipaddress}}&num={{random.int32}}&ses={{session.session_id}}",
"ad_configuration_expected_response_type": "Dfp"
},
"account_id": "Account_ID"
}
Anzeigenkonfiguration löschen
Um eine Anzeigenkonfiguration zu löschen, senden Sie a DELETE
wie folgt anfordern:
Methode | DELETE |
---|---|
URL | https://api.bcovlive.io/v1/ssai/applications/application/APPLICATION_ID |
Header | X-API-KEY: your API KEY |
Beispielantwort
{
"application_id": "Application_ID",
"deleted": true
}
Schiefer verwalten
Slates sind Ihre eigenen Assets, mit denen ungenutzte Werbezeit gefüllt wird. Sie können Schiefertafeln verwenden, um eine Nachricht mit der Aufschrift "Bin gleich zurück" oder andere Inhalte bereitzustellen, die Ihnen gefallen.
Nachfolgend finden Sie Details zu den API-Anfragen zum Hinzufügen und Verwalten von Slate-Assets.
Slate-Asset hinzufügen
Um ein neues Slate-Medienquellen-Asset aufzunehmen, senden Sie a POST
Anfrage:
Methode | POST |
---|---|
URL | https://api.bcovlive.io/v1/ssai/slates |
Header | X-API-KEY: your API KEY |
Beispielanfragetext
{
"source_url": "https://somesourceasset.com/slate-to-ingest.mp4",
"account_id": "Account_ID [Optional]",
"source_description": "User identifiable description for the slate [Optional]"
}
Beispielantwort
{
"media_source_asset_id": "New_UUID",
"account_id": "Account_ID",
"media_source_asset_default": false,
"media_source_asset_type": "slate",
"media_source_asset_url": "https://somesourceasset.com/slate-to-ingest.mp4",
"media_source_asset_status": "transcoding"
"media_source_asset_description": "User identifiable description for the slate"
}
Slate-Asset löschen
Um ein Slate-Medienquellen-Asset zu löschen, senden Sie eine DELETE
Anfrage:
Methode | DELETE |
---|---|
URL | https://api.bcovlive.io/v1/ssai/slates/slate/Slate_MSA_ID |
Header | X-API-KEY: your API KEY |
Beispielantwort
{
"media_source_asset_id": "MSA_UUID",
"media_source_asset_type": "slate",
"media_source_asset_url": "http://someS3urlpath/media.mp4",
"media_source_asset_default": false,
"media_source_asset_status": "ready",
"account_id": "ACCOUNT_ID"
}
Holen Sie sich Slate-Assets
Sie können ein Array aller Slate-Medienquellen-Assets für ein Konto abrufen, indem Sie eine GET
Anfrage:
Methode | GET |
---|---|
URL | https://api.bcovlive.io/v1/ssai/slates/account/Account_ID |
Header | X-API-KEY: your API KEY |
Beispielantwort
[
{
"media_source_asset_id": "MSA_UUID_1",
"media_source_asset_type": "slate",
"media_source_asset_default": false,
"media_source_asset_url": "http://someS3urlpath.com/media.mp4",
"account_id": "ACCOUNT_ID",
"media_source_asset_status": "ready"
},
{
"media_source_asset_id": "MSA_UUID_2",
"media_source_asset_type": "slate",
"media_source_asset_default": true,
"media_source_asset_url": "http://someS3urlpath.com/media.mp4",
"account_id": "ACCOUNT_ID",
"media_source_asset_status": "ready"
}
]
Hinweise zu DFP
Wenn Sie Anzeigen von DFP beziehen, sollten Sie Folgendes beachten, um Probleme zu vermeiden.
Anzeigen-Tag
Achten Sie beim Erstellen eines Anzeigen-Tags für Live darauf, dass Sie die richtigen Richtlinien befolgen und Folgendes einschließen: /live
. Siehe das DFP-Dokument Erstellen Sie manuell ein Master-Video-Tag für alle Einzelheiten.
Gleichzeitigkeit
Wenn Sie ein hohes Maß an Parallelität erwarten, empfehlen wir Ihnen, mit Ihrem DFP-Kontoteam zu sprechen.
Einzelne/mehrere Anzeigenantworten
Das singleadresponse
und multiadresponse
Parameter werden derzeit nicht von verwendet SSAI.
Wohnen SSAI führt nur einen einzelnen Ad-Server-Aufruf durch und erwartet, dass die Antwort alle Anzeigen für die Unterbrechung enthält, mit der Ausnahme, dass alle erforderlichen Anzeigen-Wrapper mit einem Limit von 5 Weiterleitungen pro Anzeige folgen. Die folgenden Anzeigenantwortformate werden akzeptiert und wie folgt geparst:
- VAST – Einzelantwort oder ein Anzeigen-Pod in einer einzigen Antwort
- DFP-Anzeigenregeln – Fasst alle verfügbaren Anzeigen in der Antwort zusammen, einschließlich definierter Pre-, Mid- und Post-Roll-Anzeigen
- Smart XML – Fasst alle verfügbaren Anzeigen in der Antwort zusammen, einschließlich Pre-, Mid- und Post-Roll-definierter Anzeigen
Benutzerdefinierte Header für Anzeigenanfragen
Das SSAI Die Plattform kann benutzerdefinierte Header mit den Anzeigenaufrufen und allen von der Backend-Plattform verwendeten Beacons übergeben. Einige Adserver wie VideoPlaza erfordern benutzerdefinierte Header.
Benutzerdefinierte Header werden als eine Reihe von Schlüssel-Wert-Paaren in einem . angegeben ad_configuration_headers
Objekt, das Teil des application_ad_configuration
(siehe die Erstellen Sie eine Anzeigenkonfiguration Sektion).
Hinweise
- Standard-Header werden standardmäßig behandelt, wie zum Beispiel:
X-Forwarded-For
X-Device-User-Agent
- Header-Werte können die Anzeigenkonfigurationsvariablen
- Headerwerte können auch statische Strings sein
Targeting von Anzeigen mithilfe von Anzeigenmakros
Wenn du Erstellen Sie eine Anzeigenkonfiguration , sieht Ihr Anzeigen-Tag normalerweise so aus:
https://ad-provider-host.com/path/to/ad-handler?ip={{client.ipaddress}}&
num={{random.int32}}&ses={{session.session_id}}&IDFA={{deviceid}}&
sitesection={{sitesection}}&breakid={{breakid}}&breaktheme={{breaktheme}}
Die Elemente innerhalb der doppelten geschweiften Klammern sind Variablen, auch Anzeigenmakros genannt, die Brightcove Live beim Senden der Anzeigenanfrage durch Werte ersetzt, falls vorhanden.
Anzeigenmakrowerte können auf folgende Weise bereitgestellt werden:
- Header-Informationen verwenden
- Anhängen der URL
- URLs dynamisch hinzufügen
- Verwenden von manuellen Cue-Punkten
Header-Informationen verwenden
Header-Informationen, detailliert im Anzeigenkonfigurationsvariablen Abschnitt oben, steht für jede Anfrage zur Verfügung. Geben Sie einfach die gewünschten Variablen mit den entsprechenden Schlüsselnamen in Ihrer Anzeigenkonfiguration an.
Anhängen der URL
Zusätzliche Sitzungswerte können an die URL für den Livestream angehängt werden, etwa wie folgt:
http://playback.bcovlive.io/e058d9f2737e18/us-west-2/NA/
playlist.m3u8?deviceid=123456&sitesection=services"
URLs dynamisch hinzufügen
Sie können URLs dynamisch hinzufügen, indem Sie Javascript und die Brightcove Player API verwenden:
<!DOCTYPE html>
<body>
<video
id="myPlayerID"
data-video-id="5975635167001"
data-account="3737230870001"
data-player="tIG7lVKBm"
data-embed="default"
data-application-id
class="video-js"
controls
width="640"
height="360"></video>
<script src="//players.brightcove.net/3737230870001/tIG7lVKBm_default/index.min.js"></script>
<script type="text/javascript">
var player = videojs("myPlayerID");
player.one("loadstart", function(){
var sourceUrl = player.currentSource();
console.log(sourceUrl);
var liveUrlWithParams = sourceUrl.src + "?player_width={width}&player_height={height}&deviceid={deviceid}";
player.src([{
"type": "application/vnd.apple.mpegurl",
"src": liveUrlWithParams
}]);
});
</script>
</body>
Beachten Sie, dass die Schlüsselnamen in diesem Beispiel den Variablennamen im oben gezeigten Anzeigen-Tag entsprechen.
Anzeigenkonfigurationsvariablen
Anzeigenkonfigurationsvariablen, auch als Beacons bezeichnet, können in Anfragen zur Verwaltung von Anzeigenkonfigurationen verwendet werden. Einzelheiten finden Sie im Live-API: Cue Points und Ad Beacons mit SSAI dokumentieren.
Verwenden von manuellen Cue-Punkten
Werte für bestimmte Werbeunterbrechungen können mit der manuellen Anforderung zum Einfügen von Cue-Punkten gesendet werden. Einzelheiten finden Sie im Live-API: Cue-Points und Ad-Beacons dokumentieren.
Bekannte Probleme
- SSAI erfordert, dass das Live-Streaming-Video eine Audiospur hat.
- Wenn die zurückgegebene VAST dieselbe Anzeigen-ID hat, fordert der Server den Anzeigeninhalt nicht an, obwohl die Anzeigen-URL dynamische Variablen verwendet, um sie zu einer eindeutigen URL zu machen. Das macht nicht gelten, wenn Sie DFP für Anzeigen verwenden.
- Mit DFP können Sie zwar dieselbe Anzeigen-ID verwenden, es muss jedoch eine andere Motiv-ID vorhanden sein. Mit anderen Worten, Sie können die MediaFile nicht einfach austauschen.
-
Wenn eine Werbeunterbrechung kürzer als die MAX-Dauer der Anzeigen-URL ist (min_ad_duration=0&max_ad_duration=30000), wird die Anzeige nicht wiedergegeben, wenn die Anzeige länger als die Werbeunterbrechung ist.
-
VPAID- oder anklickbare Anzeigen werden für nicht unterstützt Brightcove Live SSAI.
-
Wenn eine Werbeunterbrechung eine kürzere Restzeit als die Segmentsekunden des Streams hat und eine Slate angezeigt wird, wird die Slate für die Segmentdauer angezeigt und die tatsächliche Werbeunterbrechung ist länger als erwartet.
-
Das Obige kann dazu führen, dass eine der folgenden Werbeunterbrechungen um die Latenzzeit verkürzt wird, um zu versuchen, die Sitzung wieder an den Live-Edge zu bringen.
- Wenn die Anzeige zum ersten Mal von unserem System gesehen wird, wird sie erst abgespielt, wenn sie transcodiert und zur Auslieferung bereit ist.
- VMAP for Live SSAI wird derzeit nicht unterstützt.