Publicité vidéo sous le capot: qu'est-ce que VAST?

Qu'est-ce que VAST


Chaque jour, nous rencontrons de la publicité sous une forme ou une autre: sur des sites - avec un teaser, dans des blogs - avec native, dans VKontakte et Yandex.Music - avec de la publicité audio, sur YouTube, des services de streaming et dans des salles de cinéma en ligne - avec vidéo. Ce dernier sera discuté.

Dans cet article, je vais vous expliquer le fonctionnement de la publicité vidéo sur Internet et les spécifications qu'elle décrit.

Qu'est-ce que VAST?


Avant de commencer à décrire la spécification, estimons comment, en général, pouvons-nous diffuser des annonces vidéo sur le site? La première chose qui me vient à l'esprit est de télécharger le fichier avec l'annonce quelque part sur le serveur et de demander au propriétaire du site avec lequel nous allons faire de la publicité, d'insérer une balise vidéo sur la page avec un lien vers notre annonce:

<video id="ourVideoAd" src="https://ourhosting.dev/ourVideoAd.mp4"></video>

Pas mal, mais comment savoir combien de personnes l'ont regardé? Avez-vous regardé du tout? L'ont-ils observé jusqu'au bout? Combien de personnes sont intéressées par la publicité? Comment les envoyons-nous sur le palier?

La réponse à toutes ces questions est donnée par VAST - Video Ad Serving Template, une spécification développée par Interactive Advertising Bureau (IAB) et contenant toutes les informations sur la publicité: son emplacement physique, son format, les URL qui seront déclenchées lorsque divers événements se produisent, etc. ré.

Remarque: VAST est du XML brut .

VAST à l'état sauvage
VAST, , , network , - vast vpaid. rbc.ru, VAST ad.mail.ru/vast/

En quoi consiste VAST?


La dernière version de la spécification pour le moment est 4.2, mais en réalité, tout le monde, y compris Google, utilise la version 3.0 , et nous allons construire notre exemple dessus.

Tout commence donc avec la balise VAST avec l'attribut version :

 <VAST version="3.0"></VAST>

La balise VAST a des nœuds enfants Error et Ad . L'erreur est utilisée si le serveur n'a pas renvoyé la publication. S'il y a un nœud d' erreur , alors VAST ne devrait pas avoir d' autres nœuds enfants :

 <VAST version="3.0">
  <Error><![CDATA[http://ouradserver.com/noadhandler?error=true]]></Error>
 </VAST>

Le tag d'emplacement publicitaire est le parent des nœuds InLine ou Wrapper .

Attributs:

- id : identifiant de chaîne
- séquence : entier supérieur à zéro. Vous permet de combiner la publicité dans les soi-disant modules publicitaires . Pourquoi est-ce nécessaire? Par exemple, un lecteur vidéo publicitaire prend en charge l'affichage de deux créations consécutives. Ou, si, pour une raison quelconque, la création ne s'affiche pas, le lecteur peut passer à la suivante. Ou, vous ciblez Smart TV, dans lequel le lecteur interrompt la lecture du contenu principal plusieurs fois. En général, il n'y a pas de comportement sans ambiguïté, cela dépend beaucoup du joueur spécifique dans lequel votre VAST est affiché.

Exemple de modules publicitaires:

 <VAST version="3.0">
  <Ad id="aGVscA" sequence="1">...</Ad>
  <Ad id="aGVscB" sequence="2">...</Ad>
  <Ad id="aGVscC" sequence="3">...</Ad>
  ...
  <Ad id="aGVscD" sequence="99">...</Ad>
 </VAST>

Donc, si le serveur publicitaire n'a pas renvoyé d'erreur, alors VAST peut être avec la balise InLine :

 <VAST version="3.0">
  <Ad id="aGVscA">
   <InLine>
    ...
   </InLine>
  </Ad>
 </VAST>

soit avec une balise Wrapper :

 <VAST version="3.0">
  <Ad id="SWFt">
    <Wrapper>
      ...
    </Wrapper>
  </Ad>
 </VAST>

Quelle est la différence entre InLine et Wrapper ? La balise InLine contient tout ce dont vous avez besoin pour lancer VAST "en ce moment", c'est-à-dire des créations publicitaires, des URL de suivi, etc. Wrapper - contient un lien vers un autre VAST. Si à ce stade il vous a semblé qu'il sentait la récursivité, alors il ne vous a pas semblé. Un peu plus tard, je vais vous expliquer plus en détail pourquoi vous devez utiliser Wrapper , et examinons maintenant la structure de la balise InLine .

En ligne


Noeuds obligatoires:

  • AdSystem : nom du système publicitaire qui a fourni VAST
  • AdTitle: VAST'a
  • Impression: , , impression
  • Creatives: Creative

Remarque : l'événement d' impression se produit lorsque la première image de la création est affichée.

Vous vous demandez peut-être pourquoi les balises AdSystem et AdTitle sont requises. En partie à cause de la fraude. Le fait est qu'en tant que création, il peut y avoir un code js arbitraire. Pour l'avenir, je dirai que ces créations sont appelées créations VPAID . Autrement dit, du code js arbitraire qui s'exécute sur des millions de machines clientes. Si l'un des propriétaires du site commence à se plaindre que les annonces ont soudainement commencé à rediriger les utilisateurs vers des sites douteux avec des abonnements mobiles, la présence de ces balises facilitera la recherche du coupable.

Donc, VAST avec le nœud InLine :

 <VAST version="3.0">
  <Ad id="aGVscA">
   <InLine>
    <AdSystem>Our AdSystem</AdSystem>
    <AdTitle>Our video ad</AdTitle>
    <AdServingId>a532d16d-4d7f-4440-bd29-2ec05553fc80</AdServingId>
    <Impression><![CDATA[https://adserver.com/track/impression]]></Impression>
    <Creatives>
        ...
    </Creatives>
   </InLine>
  </Ad>
 </VAST>

Comme je l'ai dit ci-dessus, la balise Creatives est un conteneur pour les balises Creative qui ont des attributs:

  • id : id du serveur publicitaire fourni par VAST
  • séquence : numéro de série indiquant comment reproduire la création dans une rangée. À ne pas confondre avec l'attribut de séquence dans le tag d'emplacement publicitaire .
  • apiFramework : API Framework, selon le protocole openRTB

L'élément Creatives peut contenir des nœuds Linear , NonLinearAds ou CompanionAds .

Que sont les créations linéaires, non linéaires et compagnons?
Linear – . , , , , pre-roll, , mid-roll post-roll . 99% . NonLinearAds — , . - , YouTube? , NonLinearAds. CompanionAds — - .

Étant donné que 99% de la publicité en ligne sont des créations linéaires , nous ne prendrons en compte que celles-ci.

Linéaire - possède l'attribut skipoffset requis - après combien de temps vous pouvez ignorer la création, au format hh: mm: ss .

Noeuds linéaires obligatoires :

  • Durée - la durée de la création, au format hh: mm: ss: mmm . Les millisecondes sont facultatives.
  • MediaFiles - contient au moins un nœud MediaFile .

Noda MediaFile - contient des informations sur le fichier multimédia à lire. Il a les attributs suivants:

  • id : id de la création
  • delivery: progressive , , HTTP, streaming
  • type: MIME type . , video/mp4, video/webm, etc.
  • bitrate, minBitrate maxBitrate: .
  • width:
  • height:
  • scalable: , , .
  • mantainAspectRation , , , .
  • codec: , RFC 4281
  • apiFramework : API Framework, selon le protocole openRTB

Les attributs de livraison , de type , de largeur et de hauteur sont obligatoires, les autres ne le sont pas. Pour les fichiers qui n'ont pas de largeur et de hauteur, par exemple, s'il s'agit d'un fichier audio, vous pouvez spécifier zéro comme valeurs de largeur et de hauteur .

Il se présente comme ceci:

 <VAST version="3.0">
  <Ad id="aGVscA">
   <InLine>
    <AdSystem>Our AdSystem</AdSystem>
    <AdTitle>Our video ad</AdTitle>
    <AdServingId>a532d16d-4d7f-4440-bd29-2ec05553fc80</AdServingId>
    <Impression><![CDATA[https://adserver.com/track/impression]]></Impression>
     <Creatives>
      <Creative>
       <Linear skipoffset="00:00:05">
        <Duration>00:00:20</Duration>
         <MediaFiles>
          <MediaFile
           delivery="progressive"
           type="video/mp4"
           width="672"
           height="480">
            <![CDATA[{mediafile url}]]>
           </MediaFile>
           </MediaFiles>
       </Linear>
      </Creative>
     </Creatives>
   </InLine>
  </Ad>
 </VAST>

Eh bien, nous avons maintenant compilé un VAST valide dans lequel vous pouvez remplacer vos valeurs et même les exécuter dans les réseaux publicitaires. Mais, malheureusement, il manque des liens pour les statistiques et les pages de destination. Corrigeons cela et considérons deux nœuds de spécifications facultatifs - TrackingEvents et VideoClicks .

TrackingEvents - en fait, il répertorie les URL que le joueur doit tirer lors de divers événements. Les URL sont dans la balise de suivi avec l'attribut d' événement , dont la valeur est une chaîne avec le nom de l'événement. Par exemple, l'événement de démarrage ressemblerait à ceci:

 <Tracking type="start"><![CDATA[https://adserver.com/track/start]]></Tracking>

Liste des principaux événements:

  • début : création chargée et lecture commencée
  • creativeView: , , , . creativeView , , , , .
  • firstQuartile: 25%
  • midpoint: 50%
  • thirdQuartile: 75%
  • complete:
  • mute:
  • unmute:
  • pause:
  • rewind: -
  • resume:
  • fullscreen:
  • exitFullscreen: fullscreen
  • expand: «expand»
  • collapse: «collapse»
  • skip: ( )

Dans la vraie vie, le support de certains événements incombe au joueur. Par exemple, il peut ne pas prendre en charge le plein écran ou ignorer les événements . Le lecteur peut également ne pas avoir de panneau de commande de lecture, c'est-à-dire qu'il peut ne pas avoir de boutons comme agrandir , réduire , rembobiner , etc. Les événements critiques sont commencent , creativeView , firstQuartile , milieu , thirdQuartile , complet .

Ajoutons à nos VAST TrackingEvents :

 <VAST version="3.0">
  <Ad id="aGVscA">
   <InLine>
     <AdSystem>Our AdSystem</AdSystem>
     <AdTitle>Our video ad</AdTitle>
     <AdServingId>a532d16d-4d7f-4440-bd29-2ec05553fc80</AdServingId>
     <Impression><![CDATA[https://adserver.com/track/impression]]></Impression>
     <TrackingEvents>
      <Tracking type="start"><![CDATA[{your url}]]></Tracking>
      <Tracking type="creativeView"><![CDATA[{your url}]]></Tracking>
      <Tracking type="firstQuartile"><![CDATA[{your url}]]></Tracking>
      <Tracking type="midpoint"><![CDATA[{your url}]]></Tracking>
      <Tracking type="thirdQuartile"><![CDATA[{your url}]]></Tracking>
      <Tracking type="complete"><![CDATA[{your url}]]></Tracking>
      <Tracking type="skip"><![CDATA[{your url}]]></Tracking>
      <Tracking type="close"><![CDATA[{your url}]]></Tracking>
     </TrackingEvents>
     <Creatives>
       <Creative>
        <Linear skipoffset="00:00:05">
         <Duration>00:00:20</Duration>
         <MediaFiles>
          <MediaFile
            delivery="progressive"
            type="video/mp4"
            width="672"
            height="480">
             <![CDATA[{mediafile url}]]>
          </MediaFile>
         </MediaFiles>
        </Linear>
       </Creative>
     </Creatives>
   </InLine>
  </Ad>
 </VAST>

La balise VideoClicks peut contenir trois nœuds:

  • ClickThrough : URL vers laquelle le joueur doit envoyer l'utilisateur lorsqu'il clique sur la création. En gros, un lien vers la page de destination, avec toutes sortes de paramètres get .
  • ClickTracking : URL qui suit le fait du clic lui-même, c'est-à-dire, cliquez sur une création ou un lien explicite
  • CustomClick : URL qui suit toutes sortes d'autres clics (sans clic)

Dans 90% des cas, les deux premières balises sont utilisées.

En conséquence, nous avons obtenu un tel InLine VAST:

 <VAST version="3.0">
  <Ad id="aGVscA">
   <InLine>
     <AdSystem>Our AdSystem</AdSystem>
     <AdTitle>Our video ad</AdTitle>
     <AdServingId>a532d16d-4d7f-4440-bd29-2ec05553fc80</AdServingId>
     <Impression><![CDATA[https://adserver.com/track/impression]]></Impression>
     <TrackingEvents>
      <Tracking type="start"><![CDATA[{your url}]]></Tracking>
      <Tracking type="creativeView"><![CDATA[{your url}]]></Tracking>
      <Tracking type="firstQuartile"><![CDATA[{your url}]]></Tracking>
      <Tracking type="midpoint"><![CDATA[{your url}]]></Tracking>
      <Tracking type="thirdQuartile"><![CDATA[{your url}]]></Tracking>
      <Tracking type="complete"><![CDATA[{your url}]]></Tracking>
      <Tracking type="skip"><![CDATA[{your url}]]></Tracking>
      <Tracking type="close"><![CDATA[{your url}]]></Tracking>
     </TrackingEvents>
     <VideoClicks>
      <ClickThrough><![CDATA[{your landing}]]></ClickThrough>
      <ClickTracking><![CDATA[{your url}]]></ClickTracking>
     </VideoClicks>
     <Creatives>
       <Creative>
        <Linear skipoffset="00:00:05">
         <Duration>00:00:20</Duration>
         <MediaFiles>
          <MediaFile
            delivery="progressive"
            type="video/mp4"
            width="672"
            height="480">
             <![CDATA[{mediafile url}]]>
          </MediaFile>
         </MediaFiles>
        </Linear>
       </Creative>
     </Creatives>
   </InLine>
  </Ad>
 </VAST>

Wrapper


Comme je l'ai écrit ci-dessus, si vous voyez la balise Wrapper dans le passé, cela signifie que ce VAST contient un lien vers un autre VAST. Et cela, à son tour, peut également contenir un lien vers un autre VAST. Et cela, à son tour ... eh bien, vous comprenez .

Pourquoi ai-je besoin d'une balise Wrapper ? Il est utilisé, par exemple, lorsqu'un réseau publicitaire vend du trafic à un autre réseau publicitaire, qui, à son tour, vend également du trafic à un autre réseau publicitaire et que votre VAST surfe sur Internet jusqu'à ce qu'un utilisateur pertinent soit présenté à votre création. Mais à chaque étape, tous les participants à ce schéma insèrent des pixels de suivi pour conserver leurs statistiques.

Un petit exemple illustratif
. — « ». , « », , . , « », .

. , , . . , .

– , – . , ? JS c , , : , , . , , , - ? , « », , VAST InLine, . , « ».

, :

  1. .
  2. — , .
  3. .
  4. , .

, , , , , , 500 , ?

, , , « ». VAST , VAST Wrapper, - VAST .

Remarque: la spécification ne recommande pas d'utiliser plus de cinq niveaux d'imbrication, mais, comme je l'ai écrit, chaque joueur peut se comporter différemment.

Ainsi, Wrapper doit contenir les nœuds AdSystem , VASTAdTagURI et Impression . Nous avons déjà parlé d' AdSystem et d' Impression , et la balise VASTAdTagURI contient un lien vers le VAST suivant:

VAST avec la balise Wrapper :

 <VAST version="3.0">
  <Ad id="SWFt">
    <Wrapper>
     <AdSystem>Our AdSystem</AdSystem>
     <Impression><![CDATA[https://adserver.com/track/impression]]></Impression>
     <VASTAdTagURI><![CDATA[https://adserver.com/anotherVAST.xml]]></VASTAdTagURI>
    </Wrapper>
  </Ad>
 </VAST>

Remarque : VAST peut contenir une balise InLine ou une balise Wrapper , mais pas les deux balises à la fois.

Conclusion


Dans cet article, nous avons construit VAST étape par étape et examiné les principales balises qu'il contient. Vous pouvez remplacer vos URL et vérifier leur validité, par exemple, dans Video Suite Inspector de Google.

Liens utiles:


All Articles