Indicatori degli annunci

Questa guida descrive gli indicatori di annunci supportati dall'API Video Stitcher. L'API Video Stitcher identifica i confini delle interruzioni pubblicitarie in base agli indicatori di annuncio nel file manifest HLS/DASH di origine di un live streaming ed esegue l'unione degli annunci all'interno di un'interruzione pubblicitaria per ogni sessione del live streaming.

Prima di iniziare

Assicurati di conoscere i concetti e la terminologia introduttivi dell'API Video Stitcher. Per ulteriori informazioni, consulta la panoramica tecnica.

Consulta la specifica SCTE-35 Digital Program Insertion Cueing Message For Cable.

Comandi SCTE-35

Gli indicatori di annunci dei live streaming sono rappresentati da indicatori SCTE-35 standard. Nell'elenco dei comandi SCTE-35, l'API Video Stitcher supporta i seguenti due comandi:

  • splice_insert
  • time_signal

Con time_signal, puoi fornire metadati arbitrari aggiuntivi per l'interruzione pubblicitaria associata nell'identificatore programma univoco (UPID) della prima segmentazione.

L'API Video Stitcher si aspetta che segmentation_upid_type sia 0x0C, che rappresenta MPU(). Il valore private_data in MPU() deve essere una stringa JSON codificata in base64, in cui alcune chiavi JSON sono riservate per i seguenti scopi specifici:

  • %%AD_TAG_ID%%: specifica il tag annuncio da utilizzare per l'interruzione pubblicitaria. L'ID tag annuncio deve essere una delle chiavi in adTagMacros della sessione live.
  • %%SLATE_ID%%: specifica lo slate da utilizzare per l'interruzione pubblicitaria. L'ID scheda deve corrispondere all'ID di una scheda già creata nello stesso progetto Google Cloud.

Tutte le altre coppie chiave-valore nel payload UPID vengono utilizzate per la sostituzione delle macro dei tag annuncio.

Ad esempio, se l'URI di un tag annuncio è https://example.com?key=[foo] e private_data è eyJmb28iOiJiYXIifQ==, ovvero la rappresentazione in base64 di {"foo":"bar"}, l'API Video Stitcher sostituisce [foo] con bar ed effettua una richiesta di tag annuncio a https://example.com?key=bar.

Per il flusso di lavoro di integrazione di Google Ad Manager, i messaggi SCTE35 possono contenere alcuni valori che potrebbero essere sostituiti nel tag annuncio. Consulta l'elenco delle macro supportate.

Assicurati che adTagUri registrato nella configurazione pubblicata contenga le macro scelte.

Ad esempio, se il messaggio SCTE35 passa un valore per %%SPLICE_INSERT_EVENT_ID%%, assicurati che la macro esista in adTagUri come illustrato nell'esempio seguente:

AD_TAG_URI&macro=%%SPLICE_INSERT_EVENT_ID%%

Quando l'API Video Stitcher richiede i metadati dell'annuncio e il messaggio splice_insert SCTE35 ha splice_insert_event_id impostato su 123, utilizza il seguente tag annuncio:

AD_TAG_URI&macro=123

Indicatori di annunci HLS

EXT-X-DATERANGE

L'utilizzo di #EXT-X-DATERANGE è specificato nella specifica HTTP Live Streaming:

  • Un tag #EXT-X-DATERANGE con attributo SCTE35-OUT indica il punto di giunzione di inizio immediato di un'interruzione pubblicitaria.
  • Un tag #EXT-X-DATERANGE con attributo SCTE35-IN indica il punto di giunzione finale immediato di un'interruzione pubblicitaria.
  • I valori di SCTE35-OUT e SCTE35-IN dovrebbero essere codificati in esadecimale.

Esempio:

#EXT-X-DATERANGE:ID="111",START-DATE=START_DATE,SCTE35-OUT=0xFC302000000000000000FFF00F050000006F7FFF7E002932E0000000000000235EE5EF
...
#EXT-X-DATERANGE:ID="111",START-DATE=START_DATE,END-DATE=END_DATE,SCTE35-IN=0xFC302000000000000000FFF00F050000006F7F7F7E002932E0000000000000D56C4036

EXT-X-CUE-OUT ed EXT-X-CUE-IN

Un tag #EXT-X-CUE-OUT indica l'inizio immediato di un'interruzione pubblicitaria, mentre un tag #EXT-X-CUE-IN indica la fine immediata di un'interruzione pubblicitaria.

Per il messaggio SCTE-35 è possibile utilizzare un tag #EXT-OATCLS-SCTE35 e il valore deve essere codificato in base64.

Esempio (senza messaggio SCTE-35):

#EXT-X-CUE-OUT:DURATION=30
...
#EXT-X-CUE-IN

Esempio (con messaggio SCTE-35):

#EXT-OATCLS-SCTE35:/DBBAAAAAAAAAP/wBQb+AAaXgAArAilDVUVJAAAAb3//AAApMuAMFXslJUFEX1RBR19JRCUlOnRhZy0xfTQAALOJefk=
#EXT-X-CUE-OUT:30
...
#EXT-X-CUE-IN

Se è specificata la durata di un tag EXT-X-CUE-OUT, questo valore ha la precedenza anche se la durata dell'interruzione pubblicitaria nel messaggio SCTE-35 è in conflitto con questo valore. Se la durata del tag EXT-X-CUE-OUT non è specificata e ne viene specificata una nel messaggio SCTE-35 associato, viene utilizzato il valore del messaggio SCTE-35.

Indicatori di annunci DASH

Al momento, l'API Video Stitcher supporta solo i manifest DASH per più periodi. In un manifest DASH di più periodi, un'interruzione pubblicitaria deve essere rappresentata da un Period con uno stream di eventi contenente un indicatore cue-out. Un indicatore cue-in non è obbligatorio poiché la fine del periodo di interruzione pubblicitaria indica la fine dell'interruzione pubblicitaria.

Se vengono presentati più eventi cue-out nello stream di eventi SCTE-35 di un periodo di interruzione pubblicitaria, l'API Video Stitcher utilizzerà solo il primo. L'ora di presentazione dell'evento cue-out viene ignorata perché l'ora di inizio della interruzione corrisponde all'ora di inizio del periodo.

Di seguito è riportato un elenco di schemeIdUri supportati per uno stream di eventi SCTE-35:

  • urn:scte:scte35:2014:xml+bin
  • urn:scte:scte35:2013:xml

urn:scte:scte35:2014:xml+bin

Uno stream di eventi il cui schemeIdUri è impostato su urn:scte:scte35:2014:xml+bin contiene eventi che rappresentano i messaggi SCTE-35 in formato binario codificato in base64.

Esempio:

  <Period start="PT444334H55M0.010S" id="break-1">
    <EventStream schemeIdUri="urn:scte:scte35:2014:xml+bin" timescale="90000">
      <Event presentationTime="0" duration="5400000" id="1">
        <Signal xmlns="urn:scte:scte35:2014:xml+bin">
          <Binary xmlns="urn:scte:scte35:2014:xml+bin">/DBTAAAAAAAAAP/wBQb+AAaXgAA9AjtDVUVJAAAAAH//AABSZcAMJ3siJSVBRF9UQUdfSUQlJSI6InRhZy0xIiwiZGFzaCI6InRydWUifTQAABxkspA=</Binary>
        </Signal>
      </Event>
    </EventStream>
    ...
  </Period>

urn:scte:scte35:2013:xml

Uno stream di eventi il cui schemeIdUri è impostato su urn:scte:scte35:2013:xml contiene eventi che rappresentano messaggi SCTE-35 in XML chiaro.

Esempio:

  <Period start="PT444334H55M0.010S" id="break-1">
    <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml">
      <Event duration="5400000">
        <scte35:SpliceInfoSection protocolVersion="0" ptsAdjustment="140429" tier="4095">
          <scte35:SpliceInsert spliceEventId="1" spliceEventCancelIndicator="false" outOfNetworkIndicator="true" spliceImmediateFlag="false" uniqueProgramId="1" availNum="1" availsExpected="1">
            <scte35:Program><scte35:SpliceTime ptsTime="5672624400"/></scte35:Program>
            <scte35:BreakDuration autoReturn="true" duration="5400000"/>
          </scte35:SpliceInsert>
        </scte35:SpliceInfoSection>
      </Event>
    </EventStream>
    ...
  </Period>

Notifica di interruzione pubblicitaria anticipata per i live streaming

Per l'accoppiamento in tempo reale, i tag annuncio vengono elaborati in modo sincrono quando l'API Video Stitcher riceve l'indicatore di annuncio cue-out nel manifest di un live streaming. Questa elaborazione sincrona attiva un numero elevato di richieste di tag annuncio e causa lunghi ritardi per le richieste di riproduzione della sessione live se lo stream è molto popolato.

La notifica di interruzione pubblicitaria anticipata (EABN) offre all'API Video Stitcher più tempo per preparare gli annunci, in quanto la notifica informa l'API di un'imminente interruzione pubblicitaria.

Notifica di interruzione pubblicitaria anticipata HLS

Per notificare all'API un'imminente interruzione pubblicitaria in modo che possa preparare gli annunci in anticipo, la playlist HLS di un live streaming deve:

  • Utilizza #EXT-X-DATERANGE o EXT-X-CUE-OUT come indicatore dell'annuncio
  • Ripeti un indicatore di cue-out nell'elemento manifest di origine del live streaming

#EXT-X-DATERANGE

Quando l'encoder di origine pianifica un'interruzione pubblicitaria imminente, può inserire un #EXT-X-DATERANGE indicatore cue-out nel manifest di origine. L'attributo X-TYPE dell'indicatore indica il tipo di indicatore di annuncio. Per la notifica di interruzione pubblicitaria anticipata, il valore di X-TYPE dovrebbe essere EABN. L'attributo START-TIME del marcatore indica l'ora di inizio effettiva o pianificata dell'interruzione pubblicitaria. L'attributo DURATION dell'indicatore è obbligatorio per indicare la durata della interruzione pubblicitaria. Questo indicatore è chiamato cue-out EABN.

All'inizio effettivo dell'interruzione pubblicitaria, il codificatore di origine deve inserire un indicatore di cue-out #EXT-X-DATERANGE nel manifest di origine. L'attributo ID del marker deve essere uguale a quello del cue-out EABN corrispondente. Il valore START-TIME del marcatore deve corrispondere al tempo del segmento in cui viene inserito il marcatore. Questo indicatore è chiamato cue-out immediato.

Il seguente manifest di esempio contiene un cue-out EABN, un cue-out immediato e un cue-in:

#EXTM3U
#EXT-X-TARGETDURATION:4
#EXT-X-VERSION:7
#EXT-X-PROGRAM-DATE-TIME:2020-11-08T21:11:20.976Z
#EXT-X-MEDIA-SEQUENCE:239959
#EXT-X-DISCONTINUITY-SEQUENCE:2
#EXT-X-DATERANGE:ID="2415919105",X-TYPE="EABN",START-DATE="2020-11-08T21:11:28.976Z",DURATION=29.988,SCTE35-OUT=0xFC303...
#EXTINF:4.000,
1028/segment_239959.ts
#EXTINF:4.000,
1028/segment_239960.ts
#EXT-X-DATERANGE:ID="2415919105",START-DATE="2020-11-08T21:11:28.976Z",DURATION=29.988,SCTE35-OUT=0xFC303...
#EXTINF:4.000,
1028/segment_239961.ts
#EXTINF:4.000,
1028/segment_239962.ts
#EXTINF:4.000,
1028/segment_239963.ts
...
#EXT-X-DATERANGE:ID="2415919105",END-DATE="2020-11-08T21:11:48.976Z",SCTE35-IN=0xFC303...
#EXTINF:4.000,
1028/segment_239968.ts

#EXT-X-CUE-OUT

  • Utilizza #EXT-X-CUE-OUT come indicatore dell'annuncio
  • Ripeti un indicatore di cue-out nell'elemento manifest di origine del live streaming

Quando l'encoder di origine pianifica un'interruzione pubblicitaria imminente, può anche inserire un #EXT-X-CUE-OUTindicatore cue-out nel manifest di origine. L'attributo X-TYPE dell'indicatore indica il tipo di indicatore di annuncio. Per la notifica di interruzione pubblicitaria anticipata, il valore di X-TYPE dovrebbe essere EABN. L'attributo DURATION del marker deve indicare la durata dell'interruzione pubblicitaria. Questo indicatore è chiamato cue-out EABN.

All'inizio effettivo dell'interruzione pubblicitaria, il codificatore di origine deve inserire un indicatore di cue-out #EXT-X-CUE-OUT nel manifest di origine. L'attributo ID del marker deve essere uguale a quello del cue-out EABN corrispondente. Questo indicatore è chiamato cue-out immediato.

Il seguente manifest di esempio contiene un cue-out EABN, un cue-out immediato e un cue-in:

#EXTM3U
#EXT-X-TARGETDURATION:4
#EXT-X-VERSION:7
#EXT-X-PROGRAM-DATE-TIME:2020-11-08T21:11:20.976Z
#EXT-X-MEDIA-SEQUENCE:239959
#EXT-X-DISCONTINUITY-SEQUENCE:2
#EXT-OATCLS-SCTE35:0xFC303...
#EXT-X-CUE-OUT:ID="2415919105",X-TYPE="EABN",DURATION=29.988
#EXTINF:4.000,
1028/segment_239959.ts
#EXTINF:4.000,
1028/segment_239960.ts
#EXT-OATCLS-SCTE35:0xFC303...
#EXT-X-CUE-OUT:ID="2415919105",DURATION=29.988
#EXTINF:4.000,
1028/segment_239961.ts
#EXTINF:4.000,
1028/segment_239962.ts
#EXTINF:4.000,
1028/segment_239963.ts
...
#EXT-X-CUE-IN:ID="2415919105"
#EXTINF:4.000,
1028/segment_239968.ts

Notifica di interruzione pubblicitaria anticipata DASH

Per notificare all'API un'imminente interruzione pubblicitaria in modo che possa preparare gli annunci in anticipo, un manifest del live streaming DASH deve ripetere l'evento indicatore di annuncio nel Main Period e nel Ad Break Period.

La prima occorrenza in Main Period comunica all'API l'imminente interruzione pubblicitaria, mentre la seconda occorrenza in Main Period indica l'inizio immediato dell'interruzione pubblicitaria.Ad Break Period

Di seguito è riportato un manifest di esempio:

<MPD>
<Period id="1">
   <!-- Main Period -->
   <EventStream timescale="90000"  schemeIdUri="urn:scte:scte35:2013:xml">
     <Event duration="5400000" presentationTime="53460000" id="1">
       <scte35:SpliceInfoSection>
          <scte35:SpliceInsert outOfNetworkIndicator="true" spliceImmediateFlag="true">
            <scte35:BreakDuration autoReturn="true" duration="5400000"/>
            </scte35:SpliceInsert>
        </scte35:SpliceInfoSection>
      </Event>
    </EventStream>
   ...
</Period>

<Period start="PT9M54S" id="2">
    <!-- Ad Break Period -->
   <EventStream timescale="90000"  schemeIdUri="urn:scte:scte35:2013:xml">
     <Event duration="5400000" id="1">
       <scte35:SpliceInfoSection>
          <scte35:SpliceInsert outOfNetworkIndicator="true" spliceImmediateFlag="true">
            <scte35:BreakDuration autoReturn="true" duration="5400000"/>
            </scte35:SpliceInsert>
        </scte35:SpliceInfoSection>
      </Event>
    </EventStream>
   ...
</Period>

<Period start="PT10M54S" id="3">
    <!-- Main Period -->
    ...
</Period>
</MPD>

Passaggi successivi

Scopri come completare attività specifiche dell'API Video Stitcher.