Ce guide explique comment configurer votre outil de manipulation du fichier manifeste pour demander des segments d'annonces ou de slate à l'aide de la méthode pod segment.
Sélectionnez un protocole de streaming :
Prérequis
Avant de continuer, vous devez configurer un événement en direct pour le type d'insertion dynamique d'annonce (DAI, Dynamic Ad Insertion) Redirection de la diffusion de pods et les profils d'encodage. Pour configurer un événement en direct, choisissez l'une des méthodes suivantes :
- Interface utilisateur Ad Manager : configurer un livestream pour l'insertion dynamique d'annonces
- API Ad Manager : utilisez une bibliothèque cliente pour appeler la méthode
LiveStreamEventService.createLiveStreamEvents
. Définissez le paramètreLiveStreamEvent.dynamicAdInsertionType
surPOD_SERVING_REDIRECT
.
Après avoir configuré l'événement de diffusion en direct, récupérez les profils d'encodage de l'événement à partir de l'interface utilisateur ou de l'API Ad Manager en appelant la méthode DaiEncodingProfileService.getDaiEncodingProfilesByStatement
.
Récupérer le flux de contenu
Lorsqu'un utilisateur sélectionne un événement de diffusion en direct, l'application cliente envoie une demande de flux à Google Ad Manager. Dans la réponse du flux, l'application extrait l'ID de session et les métadonnées Google DAI à inclure dans la requête de fichier manifeste du flux.
L'exemple suivant transmet un ID de session Google DAI à un outil de manipulation de fichier manifeste :
https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY
Lors du traitement de la demande de lecture de contenu vidéo, stockez l'ID de session Google DAI et CUSTOM_ASSET_KEY de la demande pour préparer l'assemblage d'annonces.
Identifier les segments de coupure publicitaire et insérer des discontinuités
Lorsque vous traitez chaque fichier manifeste de variante, identifiez les tags EXT-X-CUE-IN
et EXT-X-CUE-OUT
dans votre flux, qui indiquent le début et la fin d'un bloc d'annonces.
Remplacez les tags EXT-X-CUE-IN
et EXT-X-CUE-OUT
par les éléments EXT-X-DISCONTINUITY
pour que le lecteur vidéo client puisse basculer entre le contenu et les annonces.
L'exemple de fichier manifeste suivant remplace les balises EXT-X-CUE-IN
et EXT-X-CUE-OUT
:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-CUE-OUT:15.000
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/6.ts
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4
L'exemple suivant illustre un fichier manifeste remplacé :
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXTINF:5.000,
#EXT-X-DISCONTINUITY
{... Insert ad segments here ...}
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/6.mp4
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4
Les segments d'annonces Google DAI ne sont pas chiffrés. Si votre contenu est chiffré, supprimez le chiffrement en insérant l'élément EXT-X-KEY:METHOD=NONE
avant le premier segment d'annonce de chaque bloc d'annonces. À la fin de la coupure publicitaire, réactivez le chiffrement en insérant un EXT-X-KEY
approprié.
Suivez l'heure de début, la durée et l'index de la prochaine coupure publicitaire.
Générer un jeton HMAC (Hash-based Message Authentication Code)
Chaque requête de segment effectuée à l'aide du service de pods de redirection de segment doit inclure un jeton signé HMAC pour l'authentification.
Calculez ce jeton une fois par coupure publicitaire et partagez-le entre toutes les sessions de flux.
Recueillir les paramètres du jeton
Pour remplir le corps du jeton, rassemblez les informations suivantes à partir de la coupure publicitaire actuelle :
Paramètres de jeton | ||
---|---|---|
custom_asset_key
|
Obligatoire | Clé d'élément de diffusion en direct personnalisée de Google Ad Manager. |
cust_params
|
Facultatif | Paramètres de ciblage personnalisé. Consultez les cust_params .
|
exp
|
Obligatoire | Code temporel d'expiration du jeton actuel, en secondes. |
network_code
|
Obligatoire | Code de réseau Ad Manager 360. |
pod_id
|
Obligatoire | Identifiant de la coupure publicitaire. Entier commençant à 1 . Pour chaque coupure publicitaire, cet identifiant est incrémenté de un.
Cette valeur doit être identique pour tous les utilisateurs qui regardent la même coupure publicitaire dans l'événement en cours. |
pd
|
Obligatoire, sauf pour les événements pour lesquels les coupures publicitaires sans durée sont activées. | Durée de la coupure publicitaire en millisecondes. Appelé ad_pod_duration .
|
scte35
|
Facultatif | Signal SCTE-35 encodé en base64. Google DAI copie toujours le signal dans le bloc d'annonces créé, même s'il est incorrect.
Si elle est incorrecte, vous recevez un message dans l'en-tête HTTP X-Ad-Manager-Dai-Warning de la réponse, et le signal continue de créer un break publicitaire. Pour en savoir plus sur la façon dont l'insertion dynamique d'annonces utilise le signal SCTE-35, consultez les marqueurs publicitaires compatibles.
|
Créer une chaîne de jeton
Pour créer une chaîne de jetons, listez chaque paramètre par ordre alphabétique, au format NAME=VALUE
, en séparant chaque paire nom-valeur par un tilde ~
.
Pour les paramètres facultatifs inutilisés, utilisez une chaîne vide comme valeur ou supprimez complètement le paramètre.
L'exemple suivant met en forme une chaîne de jetons :
custom_asset_key=CUSTOM_ASSET_STRING~exp=EXPIRATION~network_code=NETWORK_CODE~pd=POD_DURATION~pod_id=AD_POD_INDEX~scte35=SCTE35_MESSAGE
Générer une signature HMAC
La signature HMAC est un hachage SHA-256 de la chaîne de jeton au format HEX. La clé secrète est la clé d'authentification HMAC associée à votre événement en direct dans Google Ad Manager.
Chaîne de jeton de signature
Une fois la signature HMAC générée, ajoutez-la à la chaîne de jeton au format suivant :
~hmac=HMAC_SIGNATURE
Encoder la chaîne de jeton
Pour transmettre le jeton en tant que paramètre d'URL, encodez l'URL pour plus de sécurité.
L'exemple suivant génère un jeton HMAC signé et encodé, où les paramètres facultatifs inutilisés sont des chaînes vides :
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~cust_params=~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=
Secret key:
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F
HMAC signature:
86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88
Signed token:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~cust_params=~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=~hmac=86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88
URL-encoded signed token:
custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~cust_params%3D~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~scte35%3D~hmac%3D86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88
L'exemple suivant génère un jeton HMAC signé et encodé sans paramètres facultatifs inutilisés :
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g3~exp=1489680000~network_code=6062~pd=180000~pod_id=5
Secret key:
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F
HMAC signature:
6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9
Signed token:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~exp=1489680000~network_code=6062~pd=180000~pod_id=5~hmac=6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9
URL-encoded signed token:
custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~hmac%3D6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9
Créer des URL de segments publicitaires
Remplacez chaque segment de contenu entre les balises EXT-X-DISCONTINUITY
par une URL pointant vers la méthode de segment de groupe d'annonces.
L'exemple suivant assemble un segment de bloc d'annonces. Notez que les segments d'annonces utilisent un index basé sur zéro :
https://dai.google.com/linear/pods/v1/seg/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/0.ts?sd=AD_SEGMENT_DURATION&pd=AD_BREAK_DURATION&stream_id=SESSION_ID&auth-token=HMAC
L'exemple suivant insère les segments du bloc d'annonces dans le fichier manifeste :
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.00,
contentorigin.com/1.ts
#EXTINF:5.00,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/0.ts?sd=5000&so=0&pd=15000&stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/1.ts?sd=5000&so=5000&pd=15000&stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/2.ts?sd=5000&so=10000&pd=15000&stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
contentorigin.com/6.mp4
#EXTINF:5.00,
contentorigin.com/7.mp4
#EXTINF:5.00,
contentorigin.com/8.mp4
Facultatif : Programmer une coupure publicitaire
Pour améliorer votre taux de remplissage, envoyez une notification de coupure publicitaire anticipée (EABN) avec la durée du bloc d'annonces, les paramètres de ciblage personnalisés et les données de signal SCTE-35. Pour en savoir plus, consultez Envoyer des notifications anticipées pour les pauses publicitaires.