Invio di SCTE-35 al server di streaming

I marcatori SCTE vengono utilizzati principalmente per inserire annunci pubblicitari nel flusso video, indicando al ricevitore (ad esempio, un server di streaming) quando inserire gli annunci e per quanto tempo. Ciò consente ai sistemi di terze parti di selezionare dinamicamente gli annunci da un database. Per ulteriori informazioni su SCTE-35 in generale su questo sito web.

In questo articolo:
Introduzione
Esempi di marcatori SCTE-35
Verifica localmente il marker SCTE-35
Test del marcatore SCTE-35 in Nimble Streamer
Ulteriori informazioni


Introduzione

Consigliamo inoltre il nostro articolo generale sull'SCTE.

È possibile associare un indicatore SCTE a 4 diversi oggetti in PLAYDECK:
– Clip (in qualsiasi posizione)
– Blocchi (Inizio e Fine)
– Sovrapposizioni (Mostra e Nascondi)
– Pulsanti delle azioni

Invece di fornirvi un marcatore SCTE predefinito, abbiamo scelto un approccio diverso: dovrete scrivere il vostro marcatore SCTE. Ciò potrebbe richiedere un po“ di tempo per imparare, ma alla fine risulterà molto più flessibile. Il vantaggio è che sarai sempre compatibile con tutti i ricevitori. Per raccogliere la durata della clip e altre ”variabili“ forniamo alcuni ”segnaposto".

Si prega di notare che l'opzione SCTE deve essere abilitata nelle impostazioni di Stream:


Esempi di marcatori SCTE-35

Diamo un'occhiata ad alcuni esempi di SCTE-35. Si tratta della variante più diffusa dello standard SCTE-35, denominata “Splicing”.

Nota: Il formato SCTE-35 qui presentato funziona al meglio con Nimble Streamer (vedi sotto). A seconda del server di streaming utilizzato, il formato potrebbe variare. Rivolgiti al tuo provider.

Questo inserirà un annuncio pubblicitario e tornerà automaticamente al tuo programma al termine della durata specificata. La durata verrà impostata automaticamente da PLAYDECK in base al clip attualmente in riproduzione. È possibile sostituirla con {blockduration} o con un valore inserito manualmente. Se si sceglie un valore manuale per la durata, la formula è: DURATA DEL CLIP moltiplicata per 90000 e arrotondata. Il motivo è che 90000 è la scala temporale predefinita utilizzata dalla maggior parte dei sistemi SCTE. Esempio: il clip dura 12,4 secondi, quindi la durata SCTE sarebbe 1116000.

Invece di inviare una durata, è possibile inviare due marcatori SCTE distinti per avviare e terminare lo spot pubblicitario. Questi sono denominati CUE-OUT (passaggio dal programma allo spot) e CUE-IN (ritorno al programma).

Come avrai probabilmente già notato, l'unica differenza sta nel fatto che “outOfNetworkIndicator” assume i valori 1 (CUE-OUT) e 0 (CUE-IN). Il sistema SCTE provvederà a associare entrambi i marker in base allo “spliceEventId”.

Nota: I segnaposto supportati sono: {timestamp} {timestampunix} {airtimenext} {airtimenextunix} {plannednext} {plannednextunix} {clipid} {blockid} {blockduration} {clipduration}


Verifica localmente il marker SCTE-35

Apri PLAYDECK. Non è ancora necessario caricare alcun clip. Fai clic con il tasto destro del mouse su un pulsante ACTION qualsiasi, crea una nuova azione e seleziona COMMANDS/SCTE:

Inserisci il tag di esempio SCTE-35 cliccando su SCTE-35. Chiudi le finestre pop-up cliccando su OK (due volte):

Ora siamo in grado di inviare un tag SCTE-35 a qualsiasi flusso compatibile (UDP, DVB, SRT). Se clicchi su "Azione" in questo momento, non accadrà nulla, poiché non abbiamo ancora un flusso.

Creiamo uno stream UDP di prova, in cui ci limiteremo a inviare l'output a un file, così non dovremo (ancora) preoccuparci delle questioni relative al server. Copiate le impostazioni come indicato di seguito e avviate lo stream con “START NOW”. Non dimenticate di abilitare SCTE-35 con "Parameter":

Ora vogliamo inviare il nostro tag SCTE-35 di prova allo streaming. Chiudi quindi le impostazioni e clicca più volte sul pulsante di azione, poi torna alle impostazioni e interrompi lo streaming con "STOP NOW".

I tuoi tag SCTE-35 sono stati registrati da PLAYDECK. Puoi controllare i registri tornando al tuo codice SCTE-35 tramite il pulsante "Azioni" e cliccando su "APRI REGISTRI EVENTI":

È inoltre possibile rendere visibili i tag SCTE-35 presenti nel flusso registrato. A tal fine, è necessario un programma separato chiamato “DVBInspector”. Questo programma richiede anche il runtime JAVA, quindi scarica entrambi:

Questo strumento richiede JAVA Runtime. Se non è già installato, è possibile scaricarlo qui:
https://www.oracle.com/java/technologies/downloads/

Ora decomprimi il file “DVBinspector-1.18.0-dist.zip” (o simile) e avvia “DVBinspector-1.18.0.jar”. Quindi trascina il tuo file TS sull'applicazione. Apri la struttura ad albero come indicato di seguito per visualizzare il tuo marcatore SCTE.


Test del marcatore SCTE-35 in Nimble Streamer

Nimble Streamer è il nostro servizio di streaming preferito. È conveniente, facile da configurare e gestire, ma offre comunque la complessità necessaria per casi d'uso avanzati:

https://softvelum.com/nimble/

Installa la versione di prova di 14 giorni di Nimble sullo stesso computer su cui è in esecuzione PLAYDECK. Non è indispensabile, ma semplifica le cose, poiché ti evita di dover configurare la rete. Nimble ti chiederà inoltre di creare un account su WMSPanel, uno strumento di configurazione web per Nimble, poiché Nimble Streamer si installa senza interfaccia utente.

INFO: Affinché questo esempio SCTE-35 funzioni, NON è necessario disporre dei plug-in “Nimble Live Transcoder” o “Nimble Advertizer” se lo si prova su un'installazione definitiva. Nella versione di prova, infatti, sono disabilitati per impostazione predefinita.

Una volta avviato Nimble, c'è un'altra configurazione che devi effettuare manualmente. Apri il file di configurazione del server Nimble qui:
c:\Programmi\Nimble Streamer\conf\nimble.conf

In fondo a questo file, aggiungi le seguenti righe e salva il file.

scte35_processing_enabled = true 
scte35_forwarding_enabled = true 
hls_ad_scte35_forwarding_enabled = true
hls_ad_marker_format = cue
hls_ad_splice_out_cont_marker_enabled = true

Importante: È necessario riavviare Nimble subito, riavviando il PC oppure riavviando manualmente il servizio di Windows “Nimble Streamer”.

Ecco di nuovo le righe, ma questa volta con dei commenti per te (non usarle):

scte35_processing_enabled = true  // Abilita il modulo SCTE in generale. Necessario per tutte le altre opzioni
scte35_forwarding_enabled = true  // Consente il passaggio dei marcatori SCTE-35 tramite Live Transcoder
hls_ad_scte35_forwarding_enabled = true  // Abilita l'inoltro dei marcatori SCTE-35 nei flussi HLS
hls_ad_marker_format = cue  // Imposta Nimble per l'utilizzo dei marcatori CUE-OUT e CUE-IN
hls_ad_splice_out_cont_marker_enabled = true  // Abilita l'inserimento automatico di EXT-X-CUE-OUT-CONT

Ora configuriamo i tuoi Stream in WMSPanel:
Per prima cosa definiremo il nostro flusso in entrata. Vai su “Nimble Streamer” nel menu, seleziona “MPEGTS In” e clicca sul pulsante “Aggiungi flusso UDP”, quindi aggiungi il flusso in entrata come indicato qui sotto. Se la porta 5001 è già occupata, puoi utilizzare qualsiasi altra porta.

Ora configureremo il formato del flusso in uscita. Vogliamo utilizzare HLS qui per dimostrare la conversione del marcatore SCTE da UDP a HLS. Nella stessa pagina, vai su “MPEGTS Out” e clicca sul pulsante “Aggiungi flusso in uscita”, quindi aggiungi come segue. Assicurati di selezionare il flusso di ingresso come sorgente video e audio.

Proseguiamo ora con la configurazione in PLAYDECK. Accediamo alle impostazioni di uscita dello streaming e modifichiamo l'URL dello streaming impostandolo su “udp://127.0.0.1:5001”.

INFO: Puoi scegliere il codec video che preferisci. In questo caso ho scelto H.264 per far sì che sia la mia GPU NVIDIA a occuparsi della codifica, riducendo così il carico sulla CPU. Abilita anche SCTE-35 tramite “Parametri”.

INFO: Si prega di notare che PLAYDECK non è in grado di trasmettere direttamente in streaming HLS. Se si seleziona “Apple HTTP Live Streaming” come formato di streaming, l'output verrà salvato in un file. È quindi necessario specificare una destinazione del file come “URL dello streaming”, ad es. “c:\Users\Public\Documents\stream.m3u8”. Utilizza quindi quel file per lo streaming tramite qualsiasi server di streaming. PLAYDECK non è in grado di scrivere i tag SCTE HLS nel file manifest HLS (il file *.m3u8).

Ora vogliamo che PLAYDECK invii automaticamente i segnali SCTE, non solo tramite un pulsante, ma in base alla clip. Quindi inseriamo una clip qualsiasi e clicchiamo sull'icona COMANDI nella barra degli strumenti, poi aggiungiamo un nuovo comando, selezioniamo PLAY TIME 0 e infine inseriamo il campione SCTE-35:

INFO: È inoltre possibile aggiungere un indicatore SCTE a blocchi, sovrapposizioni e pulsanti di azione.

Ora mettiamo tutto in moto: avvia la riproduzione della clip e avvia lo streaming nelle impostazioni di PLAYDECK. Passa al WMSPanel e apri dal menu “Nimble Streamer” l'opzione “Live Streams”. Ora vedrai 1 streaming live in corso. Cliccaci sopra e seleziona il punto interrogativo all'estrema destra, come mostrato qui.

Dall'elenco degli “URL da riprodurre”, seleziona quello che termina con “playlist.m3u8” e clicca su “Copia”. Ora incolla questo URL in un qualsiasi browser che abbia un lettore HLS integrato o installato. Per questo esempio utilizzeremo il browser Chrome con la seguente estensione per il lettore HLS:
https://chromewebstore.google.com/detail/hls-player-m3u8-streaming/eakdijdofmnclopcffkkgmndadhbjgka

Una volta inserito quell'URL in Chrome, vedrai immediatamente lo streaming di PLAYDECK in riproduzione. Ora ti mostro come monitorare il tuo marcatore SCTE. In Chrome premi F12 per aprire gli Strumenti di sviluppo. In alto clicca sulla scheda “Rete”. Ora vedrai diversi “chunks.m3u8”, che fanno parte del tuo stream. Clicca su uno dei file Chunk (chiamati anche Manifest HLS) e seleziona “Anteprima” accanto ad esso. Ora vedrai il tag HLS SCTE. Se non è presente, clicca su un altro chunk, poiché inviamo l'SCTE solo all'inizio del clip.

Ecco fatto! Abbiamo raggiunto i nostri obiettivi di test. A breve saranno disponibili ulteriori informazioni che potrebbero essere utili approfondire.


Ulteriori informazioni

Accesso a PLAYDECK

Registriamo tutti i tag SCTE in entrata e in uscita. Questo ti offre anche la possibilità di testare i tuoi tag SCTE in uscita semplicemente ricollegando l'uscita a un ingresso (sia SDI che flussi) e lasciando che PLAYDECK rilevi i tuoi tag SCTE. Puoi aprire i file di log dal menu principale “Logs”:


Accesso a Nimble Streamer

Se qualcosa va storto o non va come previsto, un buon punto di partenza è controllare i file di log di Nimble. Su Windows, il log si trova qui:
c:\Programmi\Nimble Streamer\log

La registrazione è abilitata di default nella versione di prova di Nimble, ma nel caso in cui fosse necessario attivarla, ecco i parametri da inserire nel file “nimble.conf”.

log_access = file
logging = debug

Ora apri il file di log e cerca la dicitura “SCTE”. Potresti trovare qualcosa di simile, il che indica che c'è un errore di battitura nel tuo marcatore SCTE in PLAYDECK:

[SCTE35] comando di giunzione non supportato (tipo=6) per [mynewapp/mynewstream]

Se l'analisi del tuo SCTE Marker in Nimble è andata a buon fine, il risultato sarà simile a questo:

[SCTE35] splice_insert: event_id=4157 oon=1 immediate=1 pts_adjustment=0 pts=0 actual_pts=202593600 duration=2707200 data=0xfc....



Strumento: TSDuck

Si tratta di una raccolta di strumenti e plugin che include un'ampia libreria per la manipolazione dei flussi di trasporto MPEG. Grazie a questa soluzione, potrai inserire marcatori SCTE al di fuori di PLAYDECK sulla base di un algoritmo o di altre logiche complesse.

https://tsduck.io/


Strumento: x9k3

Questo strumento è in grado di convertire i marker SCTE-35 presenti nei flussi UDP o nei file MPEG-TS in tag HLS SCTE. Ciò consente di configurare un server di streaming che non dispone di una conversione automatica da SCTE-35 a HLS.

https://github.com/futzu/x9k3