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 inadTagMacros
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
.
Integrazione di Google Ad Manager
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¯o=%%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¯o=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 attributoSCTE35-OUT
indica il punto di giunzione di inizio immediato di un'interruzione pubblicitaria. - Un tag
#EXT-X-DATERANGE
con attributoSCTE35-IN
indica il punto di giunzione finale immediato di un'interruzione pubblicitaria. - I valori di
SCTE35-OUT
eSCTE35-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
oEXT-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-OUT
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 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.