Publicidad en video bajo el capó: ¿qué es VAST?

¿Qué es VAST?


Todos los días nos encontramos con publicidad de una forma u otra: en sitios, con un avance, en blogs, con nativos, en VKontakte y Yandex.Music, con publicidad de audio, en YouTube, servicios de transmisión y en salas de cine en línea, con video. Este último será discutido.

En este artículo, le diré cómo funciona la publicidad en video en Internet y qué especificaciones describe.

¿Qué es vasto?


Antes de comenzar a describir la especificación, calculemos cómo, en general, ¿podemos mostrar anuncios de video en el sitio? Lo primero que viene a la mente es cargar el archivo con el anuncio en algún lugar del servidor y preguntarle al propietario del sitio con el que anunciaremos, inserte una etiqueta de video en la página con un enlace a nuestro anuncio:

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

No está mal, pero ¿cómo sabes cuántas personas lo vieron? ¿Lo miraste todo? ¿Lo han observado hasta el final? ¿Cuántas personas están interesadas en la publicidad? ¿Cómo los enviamos al rellano?

La respuesta a todas estas preguntas viene dada por VAST : plantilla de publicación de anuncios de video, una especificación desarrollada por Interactive Advertising Bureau (IAB) y que contiene toda la información sobre publicidad: su ubicación física, formato, URL que se activarán cuando ocurran varios eventos, etc. re.

Observación: VAST es XML sin formato .

VAST en la naturaleza
VAST, , , network , - vast vpaid. rbc.ru, VAST ad.mail.ru/vast/

¿En qué consiste VAST?


La última versión de la especificación en este momento es 4.2, pero en realidad, todos, incluido Google, usan la versión 3.0 , y construiremos nuestro ejemplo sobre ella.

Entonces todo comienza con la etiqueta VAST con el atributo de versión :

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

La etiqueta VAST tiene nodos secundarios Error y Ad . Se utiliza un error si el servidor no devolvió el anuncio. Si hay un nodo Error , entonces VAST no debería tener otros nodos secundarios :

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

La etiqueta de anuncio es la principal para los nodos InLine o Wrapper .

Atributos:

- id : identificador de cadena
- secuencia : entero mayor que cero. Le permite combinar publicidad en los llamados Ad Pods . ¿Por qué se necesita esto? Por ejemplo, un reproductor de video publicitario admite mostrar dos creatividades seguidas. O, si por alguna razón la creatividad no se muestra, el jugador puede pasar a la siguiente. O bien, está apuntando a Smart TV, en el que el reproductor interrumpe la reproducción del contenido principal varias veces. En general, no hay un comportamiento inequívoco, mucho depende del jugador específico en el que se muestra su VAST.

Ejemplo de pod de anuncios:

 <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>

Entonces, si el servidor de anuncios no devolvió un error, entonces VAST puede estar con la etiqueta InLine :

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

ya sea con una etiqueta Wrapper :

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

¿Cuál es la diferencia entre InLine y Wrapper ? La etiqueta InLine contiene todo lo que necesita para lanzar VAST "en este momento", es decir, creatividades publicitarias, URL de seguimiento, etc. Contenedor : contiene un enlace a otro VAST. Si en este punto le pareció que olía a recurrencia, entonces no le pareció a usted. Un poco más tarde, le diré con más detalle por qué necesita usar Wrapper , y ahora veamos la estructura de la etiqueta InLine .

En línea


Nodos obligatorios:

  • AdSystem : nombre del sistema de anuncios que proporcionó VAST
  • AdTitle: VAST'a
  • Impression: , , impression
  • Creatives: Creative

Nota : el evento de impresión se produce cuando se muestra el primer fotograma de la creatividad.

Quizás se pregunte por qué se requieren las etiquetas AdSystem y AdTitle . En parte debido al fraude. El hecho es que, como creatividad, puede haber un código js arbitrario, mirando hacia el futuro, diré que tales creatividades se llaman creatividades VPAID . Es decir, código js arbitrario que se ejecuta en millones de máquinas cliente. Si uno de los propietarios del sitio comienza a quejarse de que el anuncio de repente comenzó a redirigir a los usuarios a sitios cuestionables con suscripciones móviles, la presencia de estas etiquetas facilitará la búsqueda del culpable.

Entonces, VAST con el nodo 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>

Como dije anteriormente, la etiqueta Creativas es un contenedor de etiquetas creativas que tienen atributos:

  • id : id del servidor de anuncios proporcionado por VAST
  • secuencia : número de serie que muestra cómo reproducir la creatividad en una fila. No debe confundirse con el atributo de secuencia en la etiqueta de anuncio .
  • apiFramework : API Framework, de acuerdo con el protocolo openRTB

El elemento Creatives puede contener nodos Linear , NonLinearAds o CompanionAds .

¿Qué son las creatividades Linear, NonLinearAds y CompanionAds?
Linear – . , , , , pre-roll, , mid-roll post-roll . 99% . NonLinearAds — , . - , YouTube? , NonLinearAds. CompanionAds — - .

Dado que el 99% de la publicidad en línea son creatividades lineales , solo las consideraremos.

Lineal : tiene el atributo requerido skipoffset : después de cuánto tiempo puede omitir la creatividad, en el formato hh: mm: ss .

Nodos lineales obligatorios :

  • Duración : la duración de la creatividad, en el formato hh: mm: ss: mmm . Milisegundos son opcionales.
  • MediaFiles : contiene nodos de MediaFile , al menos uno.

Noda MediaFile : contiene información sobre el archivo multimedia que se reproducirá. Tiene los siguientes atributos:

  • id : id de la creatividad
  • 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, de acuerdo con el protocolo openRTB

Los atributos de entrega , tipo , ancho y alto son obligatorios, el resto no. Para archivos que no tienen ancho y alto, por ejemplo, si es un archivo de audio, puede especificar cero como los valores de ancho y alto .

Resulta así:

 <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>

Bueno, ahora hemos compilado un VAST válido en el que puede sustituir sus valores e incluso ahora ejecutarlos en redes publicitarias. Pero, desafortunadamente, carece de enlaces para estadísticas y páginas de destino. Arreglemos esto y consideremos dos nodos de especificaciones opcionales: TrackingEvents y VideoClicks . Eventos de

seguimiento : de hecho, enumera las URL que el jugador debe extraer durante varios eventos. Las URL están en la etiqueta de seguimiento con el atributo de evento , cuyo valor es una cadena con el nombre del evento. Por ejemplo, el evento de inicio se vería así:

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

Lista de eventos principales:

  • inicio : creatividad cargada y comenzó a jugar
  • creativeView: , , , . creativeView , , , , .
  • firstQuartile: 25%
  • midpoint: 50%
  • thirdQuartile: 75%
  • complete:
  • mute:
  • unmute:
  • pause:
  • rewind: -
  • resume:
  • fullscreen:
  • exitFullscreen: fullscreen
  • expand: «expand»
  • collapse: «collapse»
  • skip: ( )

En la vida real, el apoyo a ciertos eventos recae en el jugador. Por ejemplo, es posible que no sea compatible con pantalla completa u omita eventos . Es posible que el reproductor tampoco tenga un panel de control de reproducción, es decir, que no tenga botones como expandir , contraer , rebobinar , etc. Los eventos críticos se inician , creativeView , firstQuartile , punto medio , thirdQuartile , completa .

Agreguemos a nuestros 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 etiqueta VideoClicks puede contener tres nodos:

  • ClickThrough : URL a la que el jugador debe enviar al usuario cuando hace clic en la creatividad. En términos generales, un enlace a la página de destino, con todo tipo de parámetros get .
  • ClickTracking : URL que rastrea el hecho de hacer clic en sí mismo, es decir, hacer clic en una creatividad o un enlace explícito
  • CustomClick : url que rastrea todo tipo de otros clics (sin clics)

En el 90% del pasado, se utilizan las dos primeras etiquetas.

Como resultado, tenemos un 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>

Envoltura


Como escribí anteriormente, si ve la etiqueta Wrapper en el pasado, esto significa que este VAST contiene un enlace a otro VAST. Y eso, a su vez, también puede contener un enlace a otro VAST. Y eso, a su vez ..., bueno, ya entiendes .

¿Por qué necesito una etiqueta Wrapper ? Se utiliza, por ejemplo, cuando una red publicitaria vende tráfico a otra red publicitaria, que, a su vez, también vende tráfico a otra red publicitaria y su VAST navega por Internet hasta que haya un usuario relevante que muestre su creatividad. Pero en cada etapa, todos los participantes en este esquema insertan píxeles de seguimiento para mantener sus estadísticas.

Un pequeño ejemplo ilustrativo.
. — « ». , « », , . , « », .

. , , . . , .

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

, :

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

, , , , , , 500 , ?

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

Observación: la especificación no recomienda usar más de cinco niveles de anidamiento, pero, como escribí, cada jugador puede comportarse de manera diferente.

Por lo tanto, Wrapper debe contener los nodos AdSystem , VASTAdTagURI e Impression . Ya hablamos sobre AdSystem e Impresión , y la etiqueta VASTAdTagURI contiene un enlace al siguiente VAST:

VAST con la etiqueta 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>

Observación : VAST puede contener una etiqueta InLine o una etiqueta Wrapper , pero no ambas etiquetas a la vez.

Conclusión


En este artículo, hemos construido VAST paso a paso y examinado las etiquetas principales que contiene. Puede sustituir sus URL y verificar su validez, por ejemplo, en Video Suite Inspector de Google.

Enlaces útiles:


All Articles