Publicidade em vídeo sob o capô: o que é o VAST?

O que é o VAST


Todos os dias nos deparamos com publicidade de uma forma ou de outra: em sites - com um teaser, em blogs - com nativos, no VKontakte e Yandex.Music - com publicidade em áudio, no YouTube, em serviços de streaming e em cinemas online - com vídeo. Este último será discutido.

Neste artigo, mostrarei como a publicidade em vídeo funciona na Internet e quais especificações ela descreve.

O que é o VAST?


Antes de começarmos a descrever a especificação, vamos estimar como, em geral, podemos exibir anúncios em vídeo no site? A primeira coisa que vem à mente é fazer upload do arquivo com o anúncio em algum lugar do servidor e perguntar ao proprietário do site com o qual anunciaremos, inserir uma tag de vídeo na página com um link para o nosso anúncio:

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

Nada mal, mas como você sabe quantas pessoas assistiram? Você olhou para tudo? Eles o assistiram até o fim? Quantas pessoas estão interessadas em publicidade? Como os enviamos para o pouso?

A resposta a todas essas perguntas é dada pelo VAST - Modelo de veiculação de anúncios em vídeo, uma especificação desenvolvida pelo Interactive Advertising Bureau (IAB) e que contém todas as informações sobre publicidade: sua localização física, formato, URLs que serão acionados quando ocorrerem vários eventos etc. d.

Observação: VAST é XML simples .

VAST em estado selvagem
VAST, , , network , - vast vpaid. rbc.ru, VAST ad.mail.ru/vast/

Em que consiste o VAST?


A versão mais recente da especificação no momento é 4.2, mas, na realidade, todos, incluindo o Google, usam a versão 3.0 , e construiremos nosso exemplo nela.

Então, tudo começa com a tag VAST com o atributo version :

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

A tag VAST possui nós filhos Erro e Anúncio . Erro é usado se o servidor não retornou o anúncio. Se houver um nó Erro , o VAST não deverá ter outros nós filhos :

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

A tag Ad é o pai dos nós InLine ou Wrapper .

Atributos:

- id : identificador de sequência
- sequência : número inteiro maior que zero. Permite combinar publicidade nos chamados Pods de anúncios . Por que isso é necessário? Por exemplo, um player de vídeo de publicidade oferece suporte à exibição de dois criativos seguidos. Ou, se por algum motivo o criativo não for exibido, o jogador poderá passar para o próximo. Ou, você está apontando para a Smart TV, na qual o player interrompe a reprodução do conteúdo principal várias vezes. Em geral, não há comportamento inequívoco, depende muito do player específico em que o seu VAST é exibido.

Exemplo de Pods de anúncio:

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

Portanto, se o servidor de anúncios não retornou um erro, o VAST pode estar com a tag InLine :

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

com uma tag Wrapper :

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

Qual é a diferença entre InLine e Wrapper ? A tag InLine contém tudo o que você precisa para iniciar o VAST "agora", ou seja, peças criativas de publicidade, URLs de rastreamento e assim por diante. Wrapper - contém um link para outro VAST. Se nesse momento lhe parecia que cheirava a recursão, não lhe parecia. Um pouco mais tarde, explicarei mais detalhadamente por que você precisa usar o Wrapper e agora vamos ver a estrutura da tag InLine .

Na linha


Nós obrigatórios:

  • AdSystem : nome do sistema de anúncios que forneceu o VAST
  • AdTitle: VAST'a
  • Impression: , , impression
  • Creatives: Creative

Nota : o evento de impressão ocorre quando o primeiro quadro do criativo é exibido.

Você pode se perguntar por que os AdSystem e etiquetas AdTitle são obrigatórios. Em parte devido a fraude. O fato é que, como criativo, pode haver um código js arbitrário. Olhando para o futuro, direi que esses criativos são chamados de criativos VPAID . Ou seja, código js arbitrário que é executado em milhões de máquinas clientes. Se um dos proprietários do site começar a reclamar que o anúncio repentinamente começou a redirecionar usuários para sites questionáveis ​​com assinaturas para celular, a presença dessas tags facilitará a busca pelo culpado.

Portanto, o VAST com o nó 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 eu disse acima, a tag Creatives é um contêiner para tags creativas que possuem atributos:

  • id : id do servidor de anúncios fornecido pelo VAST
  • sequência : número de série que mostra como reproduzir o criativo em uma linha. Não deve ser confundido com o atributo de sequência na tag de anúncio .
  • apiFramework : API Framework, de acordo com o protocolo openRTB

O elemento Creatives pode conter nós Linear , NonLinearAds ou CompanionAds .

O que são criativos Linear, Não Linear e Anúncios Complementares?
Linear – . , , , , pre-roll, , mid-roll post-roll . 99% . NonLinearAds — , . - , YouTube? , NonLinearAds. CompanionAds — - .

Como 99% da publicidade on-line são criativos lineares , consideraremos apenas eles.

Linear - tem o atributo obrigatório skipoffset - após quanto tempo você pode pular o criativo, no formato hh: mm: ss .

Nós lineares obrigatórios :

  • Duração - a duração do criativo, no formato hh: mm: ss: mmm . Milissegundos são opcionais.
  • MediaFiles - contém nós MediaFile , pelo menos um.

Noda MediaFile - contém informações sobre o arquivo de mídia a ser reproduzido. Possui os seguintes atributos:

  • id : id do criativo
  • 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 acordo com o protocolo openRTB

Os atributos de entrega , tipo , largura e altura são necessários, o restante não. Para arquivos que não possuem largura e altura, por exemplo, se for um arquivo de áudio, você pode especificar zero como os valores de largura e altura .

Acontece assim:

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

Bem, agora compilamos um VAST válido no qual você pode substituir seus valores e até agora executá-los em redes de anúncios. Infelizmente, porém, faltam links para estatísticas e páginas de destino. Vamos corrigir isso e considerar dois nós de especificações opcionais - TrackingEvents e VideoClicks .

TrackingEvents - na verdade, lista os URLs que o jogador deve puxar durante vários eventos. Os URLs estão na tag Tracking com o atributo event , cujo valor é uma string com o nome do evento. Por exemplo, o evento de início ficaria assim:

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

Lista dos principais eventos:

  • start : criativo carregado e iniciado a reprodução
  • creativeView: , , , . creativeView , , , , .
  • firstQuartile: 25%
  • midpoint: 50%
  • thirdQuartile: 75%
  • complete:
  • mute:
  • unmute:
  • pause:
  • rewind: -
  • resume:
  • fullscreen:
  • exitFullscreen: fullscreen
  • expand: «expand»
  • collapse: «collapse»
  • skip: ( )

Na vida real, o suporte para determinados eventos é do jogador. Por exemplo, ele pode não suportar a tela cheia ou pular eventos . O player também pode não ter um painel de controle de reprodução, ou seja, pode não ter botões como expandir , recolher , retroceder etc. Os eventos críticos são start , creativeView , firstQuartile , ponto médio , thirdQuartile , completos .

Vamos adicionar aos nossos 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>

A tag VideoClicks pode conter três nós:

  • ClickThrough : URL para o qual o player deve enviar o usuário quando clicar no criativo. Grosso modo, um link para a página de destino, com todos os tipos de parâmetros get .
  • ClickTracking : URL que rastreia o fato das próprias cliques, ou seja, clicar em um criativo ou em um link explícito
  • CustomClick : URL que rastreia todos os tipos de outros cliques (sem cliques)

Em 90% do passado, as duas primeiras tags são usadas.

Como resultado, obtivemos um VAST 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>
     <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>

Embrulho


Como escrevi acima, se você vir a tag Wrapper no passado, isso significa que esse VAST contém um link para outro VAST. E isso, por sua vez, também pode conter um link para outro VAST. E isso, por sua vez ... bem, você entende .

Por que preciso de uma tag Wrapper ? É usado, por exemplo, quando uma rede de anúncios vende tráfego para outra rede de anúncios, que, por sua vez, também vende tráfego para outra rede de anúncios e seu VAST navega na Internet até que um usuário relevante mostre seu criativo. Mas em cada estágio, todos os participantes desse esquema inserem pixels de rastreamento para manter suas estatísticas.

Um pequeno exemplo ilustrativo
. — « ». , « », , . , « », .

. , , . . , .

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

, :

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

, , , , , , 500 , ?

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

Observação: a especificação não recomenda o uso de mais de cinco níveis de aninhamento, mas, como escrevi, cada jogador pode se comportar de maneira diferente.

Portanto, o Wrapper deve conter os nós AdSystem , VASTAdTagURI e Impression . Já falamos sobre o AdSystem e o Impression , e a tag VASTAdTagURI contém um link para o seguinte VAST:

VAST com a tag 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>

Observação : o VAST pode conter uma marca InLine ou uma marca Wrapper , mas não as duas marcas ao mesmo tempo.

Conclusão


Neste artigo, criamos o VAST passo a passo e examinamos as principais tags que ele contém. Você pode substituir seus URLs e verificar sua validade, por exemplo, no Video Suite Inspector do Google.

Links Úteis:


All Articles