Implementieren von Spielerverbesserungen für Live-SSAI

In diesem Thema erfahren Sie, wie Sie einen Live-Stream mit serverseitigen Anzeigen erstellen, der Player Enhancements for Live SSAI für eine verbesserte Benutzererfahrung nutzt.

Einleitung

Mit den Player-Erweiterungen für Live-SSAI von Brightcove können Sie die Werbeunterbrechungen in Live-Streams mit Anzeigenzählungen, Anzeigen-Countdown-Timern, Click-through-Anzeigen und Companion-Anzeigen verbessern.

Ihre Anzeigeninformationen werden mithilfe einer Anzeigenkonfiguration angegeben, die VAST-Antworten abruft, um zu identifizieren, welche Anzeigen angezeigt werden sollen. Die VAST-Datei enthält auch Informationen zu Begleitanzeigen und Beacon-URLs.

Arbeitsablauf

Gehen Sie folgendermaßen vor, um einen Live-Stream mit SSAI- und Player-Verbesserungen zu erstellen:

  1. Bitten Sie Ihren Account Manager, Ihr Konto für Live-Streams, die serverseitige Anzeigeneinfügung (SSAI) und die Player-Verbesserungen für Live-SSAI zu aktivieren.
  2. Erstellen Sie eine Anzeigenkonfiguration
  3. Optional: Erstellen Sie Slate-Assets, um nicht genutzte Anzeigenzeit zu füllen
  4. Erstellen Sie einen Live-Job
  5. Erstellen Sie das Wiedergabetoken
  6. Konfigurieren Sie den Player
  7. Starten Sie das Streaming
  8. Lösen Sie Anzeigen mithilfe von Cue-Points aus (Dies kann vor oder während des Live-Events erfolgen)
  9. Aufräumen

Erstellen Sie eine Anzeigenkonfiguration

Eine Anzeigenkonfiguration definiert die Informationen, die erforderlich sind, um serverseitige Anzeigen in einen Live-Stream aufzunehmen. Dies umfasst die URL des Anzeigenanbieters, den erwarteten Antworttyp der Anzeige und die Frage, ob Beacons gesendet werden sollen.

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
Inhaltstyp: application/json

Alle Anforderungen werden mithilfe eines API-Schlüssels authentifiziert, der Ihnen bei der Einrichtung Ihres Kontos zur Verfügung gestellt wird. Der Schlüssel wird in der übergeben X-API-KEY Header.

Anfragetext

Einzelheiten zu den Feldern des Anforderungshauptteils finden Sie in der Live API-Referenz Dokument.

Mit Player Enhancements für Live SSAI können die hervorgehobenen Felder innerhalb von festgelegt werden application_ad_configuration Objekt.

Beispiel-Anfragetext:

{
  "application_ad_configuration": {
	"ad_configuration_description": "your ad config description",
    "ad_configuration_expected_response_type": "Vast",
	"ad_configuration_headers_for_impressions": false,
	"ad_configuration_strategy": "SingleAdResponse",
	"ad_configuration_transforms": [],
	"ad_configuration_url_format": "your ad server",
    "ad_configuration_client_sdk_enabled": true,
    "client_options": {
      "show_ad_break_remaining_time": true / false,
      "show_ad_remaining_time": true / false,
      "show_number_of_remaining_ads": true / false,
      "client_only_tracking": true / false
    }
  },
  "application_description": "your application description"
}

Hier sind die Anzeigenkonfigurationsfelder im Zusammenhang mit Player-Verbesserungen mit Live SSAI:

Feld Typ Erforderlich Beschreibung
ad_configuration_expected_response_type String Ja Für diese Funktion MÜSSEN Anzeigenkonfigurationen einen Wert von haben Vast
ad_configuration_client_sdk_enabled Boolescher Wert Ja Um diese Funktion zu aktivieren, muss dieses Feld den Wert von haben true
client_options Objekt Ein Objekt von Feldern, die sich auf Player-Verbesserungen beziehen
client_options.
show_ad_break_remaining_time
Boolescher Wert Zeige verbleibende Zeit für eine Werbeunterbrechung an
Werte: true/.false
client_options.
show_ad_remaining_time
Boolescher Wert Zeige verbleibende Zeit für eine Anzeige an
Werte: true/.false
client_options.
show_number_of_remaining_ads
Boolescher Wert Zeigen Sie die Anzahl der Anzeigen an, die in der Werbeunterbrechung verbleiben
Werte: true/.false
client_options.
client_only_tracking
Boolescher Wert Deaktivieren Sie serverseitige Tracking-Ereignisse (Impressionen / Quartile).
Werte: true/.false
Standard: false


Antwort

Beispielantwort:

{
  "application": {
    "application_description": "Test ad configuration",
    "application_ad_configuration": {
    "ad_configuration_description": "Ad config description",
    "ad_configuration_expected_response_type": "Vast",
    "ad_configuration_strategy": "SingleAdResponse",
    "ad_configuration_transforms": [],
    "ad_configuration_url_format": "https://solutions.brightcove.com/bcls/ads/simple-vast.xml",
    "ad_configuration_headers_for_impressions": false,
    "ad_configuration_client_sdk_enabled": true,
    "client_options": {
      "show_ad_break_remaining_time": true,
      "show_ad_remaining_time": true,
      "show_number_of_remaining_ads": true,
      "client_only_tracking": true
    }
    },
    "application_id": "1234567890abcdefghijkl",
    "application_type": "ads",
    "account_id": "001122334455aabbccddee"
  },
  "action": "inserted"
}

Nachdem Sie eine Anzeigenkonfiguration erfolgreich erstellt haben, kopieren Sie die application_id (Anzeigenkonfigurations-ID), die generiert wurde. Sie benötigen dies später, um die SSAI-Wiedergabe-URL zu finden.

Informationen zum Auflisten, Aktualisieren und Löschen von Anzeigenkonfigurationen finden Sie unter Anzeigenkonfigurationen verwalten Dokument

Erstellen Sie einen Live-Job

Senden Sie a, um einen Live-Job zu erstellen POST Anfrage wie folgt:

Methode POST
URL https://api.bcovlive.io/v1/jobs
Header X-API-KEY: your API KEY
Inhaltstyp: application/json

Anfragetext

Einzelheiten zu den Feldern des Anforderungshauptteils finden Sie in der Live API-Referenz Dokument.

Legen Sie für einen Live-Job mit aktivierter SSAI fest ad_insertion: true in Ihrem HTTP-Anforderungshauptteil.

Beispielanfrage (Video Cloud Video)

Um ein Video Cloud-Video zu erstellen, das für Ihren Live-Stream verwendet werden soll, und um VoD-Clips aus dem Live-Stream zu erstellen, schließen Sie Folgendes ein: videocloud Objekt im Anforderungshauptteil. Einzelheiten finden Sie im Live-API: VOD-Clips erstellen Dokument.

Das hervorgehobene Feld unten wird für die serverseitige Anzeigeneinfügung (SSAI) benötigt.

{
  "live_stream": true,
  "ad_insertion": true,
  "region": "us-west-2",
  "reconnect_time": 1800,
  "outputs": [{
      "label": "hls720p",
      "live_stream": true,
      "width": 1280,
      "height": 720,
      "video_codec": "h264",
      "h264_profile": "high",
      "video_bitrate": 2100,
      "segment_seconds": 4,
      "keyframe_interval": 60
    },
    {
      "label": "hls540p",
      "live_stream": true,
      "width": 960,
      "height": 540,
      "video_codec": "h264",
      "h264_profile": "main",
      "video_bitrate": 1500,
      "segment_seconds": 4,
      "keyframe_interval": 60
    },
    {
      "label": "hls360p",
      "live_stream": true,
      "width": 640,
      "height": 360,
      "video_codec": "h264",
      "h264_profile": "main",
      "video_bitrate": 800,
      "segment_seconds": 4,
      "keyframe_interval": 60
    }
  ],
  "videocloud": {
    "video": {
      "name": "Live SSAI VideoCloud Asset",
      "description": "",
      "long_description": "",
      "tags": [],
      "reference_id": "live_ssai_vc_asset",
      "link": {
      "url": "",
      "text": ""
    },
    "schedule": {
      "starts_at": null,
      "ends_at": null
    },
    "custom_fields": {}
    }
  }
}

Beispielanforderung (Remote-Video)

Um ein Remote-Video für Ihren Live-Stream zu verwenden, sollte Ihr Anfragetext ähnlich aussehen.

Das hervorgehobene Feld unten wird für die serverseitige Anzeigeneinfügung (SSAI) benötigt.

{
  "live_stream":true,
  "ad_insertion":true,
  "region":"us-west-2",
  "reconnect_time":1800,
  "outputs":[
    {
      "label": "hls720p",
      "live_stream": true,
      "width": 1280,
      "height": 720,
      "video_codec": "h264",
      "h264_profile": "high",
      "video_bitrate": 2100,
      "segment_seconds": 4,
      "keyframe_interval": 60
    },
    {
      "label": "hls540p",
      "live_stream": true,
      "width": 960,
      "height": 540,
      "video_codec": "h264",
      "h264_profile": "main",
      "video_bitrate": 1500,
      "segment_seconds": 4,
      "keyframe_interval": 60
    },
    {
      "label": "hls360p",
      "live_stream": true,
      "width": 640,
      "height": 360,
      "video_codec": "h264",
      "h264_profile": "main",
      "video_bitrate": 800,
      "segment_seconds": 4,
      "keyframe_interval": 60
    }
  ]
}

Weitere hilfreiche Ressourcen:

Antwort

Beispielantwort (Video Cloud Video)
{
 "id": "227356abcdefghijklmno12345",
 "outputs": [
  {
   "id": "0-2273561a201ec18",
   "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_0/chunklist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_0/chunklist_dvr.m3u8",
   "playback_url_vod": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_0/chunklist_vod.m3u8",
   "playback_added_cdns": [],
   "label": "hls720p"
  },
  {
   "id": "1-2273561a201e8c18",
   "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_1/chunklist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_1/chunklist_dvr.m3u8",
   "playback_url_vod": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_1/chunklist_vod.m3u8",
   "playback_added_cdns": [],
   "label": "hls540p"
  },
  {
   "id": "2-2273561a201ec18",
   "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_2/chunklist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_2/chunklist_dvr.m3u8",
   "playback_url_vod": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_2/chunklist_vod.m3u8",
   "playback_added_cdns": [],
   "label": "hls360p"
  },
  {
   "id": "3-2273561a201ec18",
   "playlist_type": "defaultS3",
   "type": "playlist",
   "filename": "playlist.m3u8",
   "dvr_filename": "playlist_dvr.m3u8",
   "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist_dvr.m3u8",
   "ssai_playback_urls": {
    "b907ac7935e2": {
     "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_ssaiM.m3u8",
     "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_dvr_ssaiM.m3u8",
     "playback_added_cdns": [],
     "description": "Test ad configuration for SLS",
     "type": "ads"
    },
    "dc9aa8ee3520f2": {
     "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_ssaiM.m3u8",
     "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_dvr_ssaiM.m3u8",
     "playback_added_cdns": [],
     "description": "Test live ad config for SLS",
     "type": "ads"
    }
   },
   "playback_added_cdns": []
  }
 ],
 "stream_url": "rtmp://ec2-54-184-149-60.us-west-2.compute.amazonaws.com:1935/2273561a201ec18",
 "stream_name": "alive",
 "static": false,
 "job_videocloud_asset_id": "6227380655001",
 "encryption": {},
 "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist.m3u8",
 "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist_dvr.m3u8",
 "ssai_playback_urls": {
  "b907ac7935e2": {
   "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_ssaiM.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_dvr_ssaiM.m3u8",
   "playback_added_cdns": [],
   "description": "Test ad configuration for SLS",
   "type": "ads"
  },
  "dc9aa8ee3520f2": {
   "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_ssaiM.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_dvr_ssaiM.m3u8",
   "playback_added_cdns": [],
   "description": "Test live ad config for SLS",
   "type": "ads"
  }
 },
 "playback_added_cdns": []
}

Beispielantwort (Remote-Video)
{
 "id": "bbccddeeffgghhiijjkk0011223344",
 "outputs": [
  {
   "id": "0-bbccddeeffgghhiijjkk0011223344",
   "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_0/chunklist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_0/chunklist_dvr.m3u8",
   "playback_url_vod": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_0/chunklist_vod.m3u8",
   "playback_added_cdns": [],
   "label": "hls720p"
  },
  {
   "id": "1-bbccddeeffgghhiijjkk0011223344",
   "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_1/chunklist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_1/chunklist_dvr.m3u8",
   "playback_url_vod": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_1/chunklist_vod.m3u8",
   "playback_added_cdns": [],
   "label": "hls540p"
  },
  {
   "id": "2-bbccddeeffgghhiijjkk0011223344",
   "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_2/chunklist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_2/chunklist_dvr.m3u8",
   "playback_url_vod": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_2/chunklist_vod.m3u8",
   "playback_added_cdns": [],
   "label": "hls360p"
  },
  {
   "id": "3-bbccddeeffgghhiijjkk0011223344",
   "playlist_type": "defaultS3",
   "type": "playlist",
   "filename": "playlist.m3u8",
   "dvr_filename": "playlist_dvr.m3u8",
   "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist_dvr.m3u8",
   "ssai_playback_urls": {
    "91bc2d5ff4a4441db34c2457c751c3ca": {
     "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_ssaiM.m3u8",
     "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_dvr_ssaiM.m3u8",
     "playback_added_cdns": [],
     "description": "Test ad configuration",
     "type": "ads"
    },
    "e7f6e9a3022a45e1b0b322ba57399150": {
     "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/e7f6e9a3022a45e1b0b322ba57399150/playlist_ssaiM.m3u8",
     "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/e7f6e9a3022a45e1b0b322ba57399150/playlist_dvr_ssaiM.m3u8",
     "playback_added_cdns": [],
     "description": "House Ads - 0077db20eb444b5daa7487438c90a271",
     "type": "ads"
    }
   }
  }
 ],
 "stream_url": "rtmp://ep4-usw2.bcovlive.io:1935/bbccddeeffgghhiijjkk0011223344",
 "stream_name": "alive",
 "static": false,
 "encryption": {},
 "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist.m3u8",
 "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist_dvr.m3u8",
 "ssai_playback_urls": {
  "91bc2d5ff4a4441db34c2457c751c3ca": {
   "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_ssaiM.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_dvr_ssaiM.m3u8",
   "playback_added_cdns": [],
   "description": "Test ad configuration",
   "type": "ads"
  }
 }
}

Notieren Sie sich in der API-Antwort die folgenden Feldwerte für den nächsten Schritt:

  • id- Ihre Live-Job-ID
  • stream_url, stream_name - Eingänge für Ihren Live-Stream-Encoder
  • job_videocloud_asset_id- Video Cloud-Video-ID

Erstellen Sie das Wiedergabetoken

Sie benötigen den Wiedergabetoken mit Ihrem Player.

Senden Sie a, um das Wiedergabetoken zu erstellen POST Anfrage wie folgt:

Methode POST
URL https://api.bcovlive.io/v1/jobs/your live job id/playback-token
Header X-API-KEY: your API KEY
Inhaltstyp: application/json

Anfragetext

Beispiel-Anfragetext:

{
   "dvr":true / false,
   "application_id":"your ad config id"
}

Antwort

Beispielantwort:

{
 "playback_token": "live.JhQabcdefghijkl000000000abcdefghi"
}

Der Antworttext enthält ein generiertes Wiedergabetoken. Verwenden Sie diese Option, wenn Sie mit Ihrem Player einen Playback-API-Aufruf durchführen.

Konfigurieren Sie den Player

Die Wiedergabe Ihres Live-Streams über die Wiedergabe-API unterscheidet sich geringfügig von der Wiedergabe eines normalen Video Cloud-Videos. Zusätzlich zur Angabe der Video-ID (Referenz-ID) müssen Sie ein Wiedergabe-Token einfügen, das die Anzeigenkonfiguration angibt, die Sie verwenden möchten. Sie müssen auch angeben, ob Sie eine DVR-Wiedergabe wünschen.

Internet Spieler

Ausführliche Informationen zum Konfigurieren des Brightcove-Players finden Sie in der Verwenden von Player-Verbesserungen für Live-SSAI mit Brightcove Player Dokument.

Nativer Android-Player

Weitere Informationen zum Konfigurieren des Native Player für Android finden Sie in der Verwenden von Player-Verbesserungen für Live-SSAI mit den nativen SDKs Dokument.

Nativer iOS-Player

Weitere Informationen zum Konfigurieren des Native Player für iOS finden Sie in der Verwenden von Player-Verbesserungen für Live-SSAI mit den nativen SDKs Dokument.

Starten Sie das Streaming

Es gibt viele Tools zum Erstellen eines Live-Streaming-Ereignisses. Hier sind einige Encoder, mit denen Sie einen von einem CDN gelieferten Live-Stream erzeugen können:

Aufräumen

Wenn Ihr Live-Stream fertig ist, können Sie die Artefakte für Ihren Stream wie folgt bereinigen:

  1. Stoppen Sie Ihren Streaming-Encoder
  2. Kündigen Sie den Live-Job.

    Um einen Live-Job abzubrechen, senden Sie a PUT Anfrage wie folgt:

    Methode PUT
    URL https://api.bcovlive.io/v1/jobs/your live job id/cancel
    Header X-API-KEY: your API KEY
    Inhaltstyp: application/json

    Einzelheiten finden Sie in der Live API-Referenz Dokument.

  3. Löschen Sie Ihre Anzeigenkonfiguration

    Um eine Anzeigenkonfiguration zu löschen, senden Sie a DELETE wie folgt anfordern:

    Methode PUT
    URL https://api.bcovlive.io/v1/ssai/applications/application/your ad config id
    Header X-API-KEY: your API KEY
    Inhaltstyp: application/json

    Einzelheiten finden Sie in der Live API-Referenz Dokument.