API d'insertion dynamique d'annonces pour les flux de vidéo à la demande

L'API d'insertion dynamique d'annonce de Google vous permet d'implémenter des flux pour lesquels l'insertion dynamique d'annonce est activée dans les environnements où la mise en œuvre du SDK IMA n'est pas prise en charge. Nous vous recommandons de continuer à utiliser IMA sur les plates-formes compatibles avec le SDK IMA.

Nous vous recommandons d'utiliser l'API d'insertion dynamique d'annonce sur les plates-formes suivantes:

  • Smart TV Samsung (Tizen)
  • LG TV
  • HbbTV
  • Xbox (applications JavaScript)
  • KaiOS

L'API est compatible avec les fonctionnalités de base fournies par le SDK IMA DAI. Pour toute question spécifique sur la compatibilité ou les fonctionnalités compatibles, contactez votre responsable de compte Google.

Implémenter l'API d'insertion dynamique d'annonce pour les flux de vidéo à la demande

L'API d'insertion dynamique d'annonce est compatible avec les flux de vidéo à la demande utilisant les protocoles HLS et DASH. Les étapes décrites dans ce guide s'appliquent aux deux protocoles.

Pour intégrer l'API à votre application pour les flux de VOD, procédez comme suit:

  1. Demandez un flux en effectuant un appel POST au point de terminaison du flux:

    Exemple de corps de la requête :

    https://dai.google.com/ondemand/v1/dash/content/2559737/vid/tos-dash/stream
    
      {
        key1 : "value1",
        stream_parameter1 : "value2"
      }
    

    Exemple de corps de réponse:

    {
       "stream_id":"d32f8920-612a-4d46-8bc7-d73fd6c17c85",
       "total_duration":636.458,
       "content_duration":596.458,
       "valid_for":"8h0m0s",
       "valid_until":"2020-06-04T20:39:41.274707306-07:00",
       "stream_manifest":"https://dai.google.com/ondemand/dash/content/2559737/vid/tos-dash/ATL/streams/d32f8920-612a-4d46-8bc7-d73fd6c17c85/manifest.mpd",
       "media_verification_url":"https://dai.google.com/view/p/service/vod/stream/d32f8920-612a-4d46-8bc7-d73fd6c17c85/loc/ATL/network/124319096/content/2559737/vid/tos-dash/media/",
       "ad_breaks":[
          {
             "type":"pre",
             "start":0,
             "duration":10,
             "ads":[
                {
                   "seq":1,
                   "duration":10,
                   "title":"External NCA1C1L1 Preroll",
                   "description":"External NCA1C1L1 Preroll ad",
                   "clickthrough_url":"https://dai.google.com/ondemand/v1/dash/content/2474148/vid/bbb-clear/location/ATL/stream/d32f8920-612a-4d46-8bc7-d73fd6c17c85/videoclick/5489259204425938365",
                   "events":[
                      {
                         "time":0.1,
                         "type":"start"
                      },
                      {
                         "time":2.5,
                         "type":"firstquartile"
                      },
                      {
                         "time":4.75,
                         "type":"midpoint"
                      },
                      {
                         "time":7.5,
                         "type":"thirdquartile"
                      },
                      {
                         "time":9,
                         "type":"complete"
                      }
                   ]
                }
             ]
          },
          {
             "type":"mid",
             "start":45,
             "duration":10,
             "ads":[
                {.... }
                   ]
                }
             ]
          },
          {
             "type":"post",
             "start":626.458,
             "duration":10,
             "ads":[...]
          }
       ]
    }
    

    Réponse d'erreur

    En cas d'erreurs, les codes d'erreur HTTP standards sont renvoyés sans corps de réponse JSON.

  2. Analysez la réponse JSON et stockez les valeurs suivantes:

    • stream_id
    • stream_manifest
    • media_verification_url
    • ad_breaks
  3. Pour effectuer une validation multimédia, écoutez les événements ID3:

    1. Stockez les événements multimédias dans une file d'attente, en enregistrant chaque ID multimédia avec son code temporel (s'il est présenté par le lecteur).
    2. À chaque mise à jour depuis le lecteur, ou à une fréquence définie (500 ms recommandée), vérifiez les événements multimédias récemment lus dans la file d'attente en comparant les horodatages des événements à la tête de lecture.
    3. Pour les événements multimédias dont vous avez confirmé la lecture, suivez la lecture en ajoutant l'ID multimédia au point de terminaison de validation multimédia et en envoyant une requête GET.

    Exemple de corps de la requête :

    https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/
    

    Exemples de réponses:

    Accepted for asynchronous verification - HTTP/1.1 202 Accepted
    Successful empty response - HTTP/1.1 204 No Content
    Media verification not found - HTTP/1.1 404 Not Found
    Media verification sent by someone else - HTTP/1.1 409 Conflict
    

    Vous pouvez vérifier les événements de suivi dans la surveillance de l'activité des flux.

  4. (Facultatif) Utilisez les données ad_breaks de la réponse de création de flux pour rechercher le type d'événement déclenché.

  5. Supprimez l'événement multimédia de la file d'attente.

Limites

Si vous utilisez l'API dans des WebViews, les limites suivantes s'appliquent au ciblage:

  • UserAgent: le paramètre user-agent est transmis en tant que valeur spécifique au navigateur au lieu de la plate-forme sous-jacente.
  • rdid, idtype, is_lat: l'ID de l'appareil n'est pas correctement transmis, ce qui limite les fonctionnalités suivantes :
    • Limitation de la fréquence d'exposition
    • Rotation séquentielle des annonces
    • Segmentation et ciblage de l'audience

Bonnes pratiques

Le mappage des tags ID3 avec le type d'événement approprié est fastidieux pour les vidéos à la demande. Utilisez les informations ad_breaks renvoyées dans le fichier JSON pour rechercher l'événement directement, comme vous le feriez avec du contenu en direct.

Ressources supplémentaires