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 Serving API und Ihrem Manifestbearbeiter zu laden.

Vorbereitung

Bevor Sie fortfahren, benötigen Sie Folgendes:

Streamanfrage stellen

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

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

  2. Übergeben Sie Parameter für das Anzeigen-Targeting im Format application/x-www-form-urlencoded oder application/json. Mit dieser Anfrage wird eine Streamsitzung 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 Erfolg sehen Sie eine ähnliche Ausgabe wie die folgende:

    {
    "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 die ID der Streamsitzung und speichern Sie andere Daten für die nächsten Schritte.

Anzeigenmetadaten abrufen

So rufen Sie Anzeigenmetadaten ab:

  1. Lesen Sie den Wert metadata_url aus der Antwort der Streamregistrierung.

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

    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 Objekt tags für spätere Schritte.

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

Stream in Videoplayer laden

Nachdem Sie die Sitzungs-ID aus der Registrierungsantwort erhalten haben, übergeben Sie sie an Ihren Manifestbearbeiter 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 Ihres Manifestbearbeiters. Wenn Sie einen Manifestbearbeiter entwickeln, lesen Sie den Artikel Manifestbearbeiter 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 Ihr Player bereit ist, starten Sie die Wiedergabe.

Auf Anzeigenereignisse warten

Prüfen Sie das Containerformat Ihres Streams auf zeitgesteuerte Metadaten:

  • HLS-Streams mit Transport Stream (TS)-Containern 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.

  • In DASH-Streams werden InbandEventStream-Elemente verwendet, wenn die Segmente Event Message (emsg)-Boxen 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 Ihrem Stream finden Sie im Leitfaden Ihres Videoplayers. Weitere Informationen finden Sie im Leitfaden zum Verarbeiten zeitgesteuerter Metadaten.

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

  1. Filtern Sie die Ereignisse nach scheme_id_uri mit urn:google:dai:2018 oder https://aomedia.org/emsg/ID3.
  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
    

Anzeigenereignisdaten anzeigen

So suchen Sie das TagSegment Objekt:

  1. Rufen Sie das Objekt tags für Anzeigenmetadaten unter Anzeigenmetadaten ab. Das Objekt tags 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 das TagSegment haben, verwenden Sie die Eigenschaft ad_break_id als Schlüssel um das AdBreak Objekt im Objekt ad_breaks für Anzeigenmetadaten zu finden.

    Im folgenden Beispiel wird ein AdBreak-Objekt gesucht:

    {
      "type":"mid",
      "duration":15,
      "ads":1
    }
    
  5. Verwenden Sie die Daten TagSegment und AdBreak, um Informationen zur Anzeigenposition in der Werbeunterbrechung anzuzeigen. Beispiel: Ad 1 of 3.

Pings zur Medienbestätigung senden

Senden Sie für jedes Anzeigenereignis außer dem Typ progress einen Ping zur Medienbestätigung. progress-Ereignisse werden von Google DAI verworfen. Wenn Sie diese Ereignisse häufig senden, kann sich das auf die App-Leistung auswirken.

So generieren Sie die vollständige Bestätigungs-URL für Medien eines Anzeigenereignisses:

  1. Hängen Sie aus der Streamantwort die vollständige Anzeigenereignis-ID 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 Statuscode 202. Andernfalls erhalten Sie den Fehlercode 404.

Mit der Überprüfung der Streamingaktivitäten (SAM) können Sie ein Protokoll aller Anzeigenereignisse aufrufen. Weitere Informationen finden Sie unter Livestream beobachten und Fehler beheben.