Client für die Weiterleitung für die Pod-Auslieferung vorbereiten

In diesem Leitfaden wird beschrieben, wie Sie eine Clientanwendung entwickeln, um einen HLS- oder DASH-Livestream mit der Pod-Auslieferungs-API und Ihrem Manifest-Manipulator zu laden.

Vorbereitung

Bevor Sie fortfahren, benötigen Sie Folgendes:

Streaminganfrage stellen

Wenn ein Nutzer einen Stream auswählt, gehen Sie so vor:

  1. Stellen Sie eine POST-Anfrage an die Livestream-Dienstmethode. Weitere Informationen finden Sie unter Methode: stream.

  2. Übergeben Sie Parameter für das Anzeigentargeting im Format application/x-www-form-urlencoded oder application/json. Mit dieser Anfrage wird eine Streamingsitzung bei Google DAI registriert.

    Im folgenden Beispiel wird eine Streamanfrage gestellt:

    Formularcodierung

    const url = `https://dai.google.com/ssai/pods/api/v1/` +
          `network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream`;
    
    const params = new URLSearchParams({
            cust_params: 'section=sports&page=golf,tennis'
    }).toString();
    
    const response = await fetch(url, {
            method: 'POST',
            headers: {
              'Content-Type': 'application/x-www-form-urlencoded'
            },
            body: params
    });
    
    console.log(await response.json());
    

    JSON-Codierung

    const url = `https://dai.google.com/ssai/pods/api/v1/` +
          `network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream`;
    
    const response = await fetch(url, {
            method: 'POST',
            headers: {
              'Content-Type': 'application/json'
            },
            body: JSON.stringify({
              cust_params: {
                section: 'sports',
                page: 'golf,tennis'
              }
            })
    });
    
    console.log(await response.json());
    

    Bei erfolgreicher Ausführung erhalten Sie eine Ausgabe ähnlich der folgenden:

    {
    "stream_id": "8d2b2292-6356-4c0e-94be-cece01d2df2e:DLS",
    "media_verification_url": "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/.../metadata",
    "session_update_url": "https://dai.google.com/linear/.../session",
    "polling_frequency": 10
    }
    
  3. Suchen Sie in der JSON-Antwort nach der Stream-Sitzungs-ID und speichern Sie andere Daten für die nachfolgenden Schritte.

Anzeigenmetadaten abrufen

So rufen Sie Anzeigenmetadaten ab:

  1. Lesen Sie den metadata_url-Wert aus der Antwort auf die Streamregistrierung.

  2. Senden Sie eine GET-Anfrage an den Endpunkt. Weitere Informationen finden Sie unter Methode: Metadaten.

    Im folgenden Beispiel werden Anzeigenmetadaten abgerufen:

    const response = await fetch(metadata_url);
    console.log(await response.json());
    

    Bei Erfolg erhalten Sie die PodMetadata-Antwort für aktuelle und bevorstehende Werbeunterbrechungen:

    {
      "tags":{
        "google_5555555555":{
          "ad":"0000229834_ad1",
          "ad_break_id":"0000229834",
          "type":"firstquartile"
        },
        "google_1234567890123456789":{
          "ad":"0000229834_ad1",
          "ad_break_id":"0000229834",
          "type":"progress"
        },
        ...
      },
      "ads":{
        "0000229834_ad1":{
          "ad_break_id":"0000229834",
          "position":1,
          "duration":15,
          "clickthrough_url":"https://.../",
          ...
        },
              ...
      },
      "ad_breaks":{
        "0000229834":{
          "type":"mid",
          "duration":15,
          "ads":1
        },
        ...
      }
    }
    
  3. Speichern Sie das tags-Objekt für spätere Schritte.

  4. Legen Sie einen Timer mit dem polling_frequency-Wert fest, um regelmäßig Metadaten für alle nachfolgenden Werbeunterbrechungen anzufordern.

Lade den Stream in deinen Videoplayer.

Nachdem Sie die Sitzungs-ID aus der Registrierungsantwort erhalten haben, übergeben Sie sie an Ihren Manifest-Manipulator oder erstellen Sie eine Manifest-URL, um den Stream in einen Videoplayer zu laden.

Informationen zum Übergeben der Sitzungs-ID finden Sie in der Dokumentation zu Ihrem Manifest-Manipulator. Wenn Sie eine Manifestbearbeitung entwickeln, lesen Sie den Abschnitt Manifestbearbeitung für Livestream.

Im folgenden Beispiel wird eine Manifest-URL zusammengestellt:

https://<your_manifest_manipulator_url>/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY"

Wenn der Player bereit ist, starte die Wiedergabe.

Auf Anzeigenereignisse warten

Prüfe das Containerformat deines Streams auf zeitgesteuerte Metadaten:

  • HLS-Streams mit Transport Stream-Containern (TS) verwenden zeitgesteuerte ID3-Tags, um zeitgesteuerte Metadaten zu übertragen. Weitere Informationen finden Sie unter Common Media Application Format mit HTTP Live Streaming (HLS).

  • In DASH-Streams werden EventStream-Elemente verwendet, um Ereignisse im Manifest anzugeben.

  • DASH-Streams verwenden InbandEventStream-Elemente, wenn die Segmente emsg-Felder (Event Message) für Nutzlastdaten, einschließlich ID3-Tags, enthalten. Weitere Informationen finden Sie unter InbandEventStream.

  • CMAF-Streams, einschließlich DASH und HLS, verwenden emsg-Boxen mit ID3-Tags.

Informationen zum Abrufen von ID3-Tags aus deinem Stream findest du in der Anleitung deines Videoplayers. Weitere Informationen finden Sie im Leitfaden zum Verarbeiten von Zeitmetadaten.

So rufen Sie die Anzeigenereignis-ID aus ID3-Tags ab:

  1. Ereignisse nach scheme_id_uri mit urn:google:dai:2018 oder https://aomedia.org/emsg/ID3 filtern.
  2. Extrahieren Sie das Byte-Array aus dem Feld message_data.

    Im folgenden Beispiel werden die emsg-Daten in JSON decodiert:

    {
      "scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3",
      "presentation_time": 27554,
      "timescale": 1000,
      "message_data": "ID3TXXXgoogle_1234567890123456789",
      ...
    }
    
  3. Filtern Sie die ID3-Tags mit dem Format TXXXgoogle_{ad_event_ID}:

    TXXXgoogle_1234567890123456789
    

Werbeereignisdaten anzeigen

So finden Sie das TagSegment-Objekt:

  1. Rufen Sie das tags-Objekt für Anzeigenmetadaten aus Poll ad metadata ab. Das tags-Objekt ist ein Array von TagSegment-Objekten.

  2. Verwenden Sie die vollständige Anzeigenereignis-ID, um ein TagSegment-Objekt mit dem Typ progress zu finden.

  3. Verwenden Sie die ersten 17 Zeichen der Anzeigenereignis-ID, um ein TagSegment-Objekt anderer Typen zu finden.

  4. Nachdem Sie die TagSegment haben, verwenden Sie die Eigenschaft ad_break_id als Schlüssel, um das Objekt AdBreak im Objekt ad_breaks mit Anzeigenmetadaten zu finden.

    Im folgenden Beispiel wird ein AdBreak-Objekt gesucht:

    {
      "type":"mid",
      "duration":15,
      "ads":1
    }
    
  5. Mit den Daten TagSegment und AdBreak können Sie Informationen zur Anzeigenposition in der Werbeunterbrechung anzeigen. Beispiel: Ad 1 of 3

Media-Bestätigungs-Pings senden

Senden Sie für jedes Anzeigenereignis mit Ausnahme des Typs progress einen Media-Überprüfungs-Ping. Bei Google DAI werden progress-Ereignisse verworfen. Wenn Sie diese Ereignisse häufig senden, kann sich das auf die Leistung Ihrer App auswirken.

So generieren Sie die vollständige Media-Bestätigungs-URL eines Anzeigenereignisses:

  1. Hängen Sie aus der Streamantwort die vollständige ID des Werbeereignisses an den Wert media_verification_url an.

  2. Stellen Sie eine GET-Anfrage mit der vollständigen URL:

    // media_verification_url: "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/"
    const completeUrl = `${media_verification_url}google_5555555555123456789`;
    
    const response = await fetch(completeUrl);
    

    Bei Erfolg erhalten Sie eine Antwort mit dem Codestatus 202. Andernfalls erhalten Sie den Fehlercode 404.

Mit der Überwachung der Streamingaktivitäten (Stream Activity Monitor, SAM) können Sie ein Protokoll aller bisherigen Werbeereignisse aufrufen. Weitere Informationen finden Sie unter Livestream überwachen und Fehler beheben.