Envío de SCTE-35 al servidor de streaming

Los marcadores SCTE se utilizan principalmente para insertar anuncios en la señal de vídeo, indicando al receptor (por ejemplo, un servidor de streaming) en qué momento debe insertar los anuncios y con qué duración. Esto permite a los sistemas de terceros seleccionar dinámicamente los anuncios de una base de datos. Puede obtener más información sobre el estándar SCTE-35 en general en este sitio web.

En este artículo:
Introducción
Ejemplos de marcadores SCTE-35
Probar el marcador SCTE-35 a nivel local
Probar el marcador SCTE-35 en Nimble Streamer
Información adicional


Introducción

También recomendamos nuestro artículo general sobre la SCTE.

Puedes asociar un marcador SCTE a cuatro objetos diferentes en PLAYDECK:
– Clips (en cualquier posición)
– Bloques (Inicio y Fin)
– Superposiciones (Mostrar y ocultar)
– Botones de acciones

En lugar de proporcionarte un marcador SCTE predefinido, hemos optado por un enfoque diferente: tendrás que escribir tu propio marcador SCTE. Esto puede suponer un pequeño esfuerzo de aprendizaje, pero al final resulta mucho más flexible. La ventaja es que siempre serás compatible con todos los receptores. Para recopilar la duración del clip y otras “variables”, proporcionamos ciertos “marcadores de posición”.

Ten en cuenta que debes habilitar SCTE en las opciones de transmisión:


Ejemplos de marcadores SCTE-35

Veamos algunos ejemplos de SCTE-35. Se trata de la variante más utilizada de SCTE-35, denominada “empalme”.

Nota: El formato SCTE-35 que aquí se presenta funciona mejor con Nimble Streamer (véase más abajo). Dependiendo de tu servidor de streaming, el formato puede variar. Consulta a tu proveedor.

Esto insertará un anuncio y volverá automáticamente a tu programa una vez transcurrida la duración indicada. PLAYDECK establecerá automáticamente la duración en función del clip que se esté reproduciendo en ese momento. Este valor se puede sustituir por {blockduration} o por un valor introducido manualmente. Si eliges un valor manual para la duración, la fórmula es: DURACIÓN DEL CLIP multiplicada por 90000 y redondeada. La razón es que 90000 es la escala de tiempo predeterminada que utilizan la mayoría de los sistemas SCTE. Ejemplo: el clip dura 12,4 segundos, por lo que la duración SCTE sería 1116000.

En lugar de enviar una duración, también puedes enviar dos marcadores SCTE independientes para iniciar y finalizar el anuncio. Estos se denominan CUE-OUT (salida del programa para el anuncio) y CUE-IN (regreso al programa).

Como seguramente ya habrás observado, la única diferencia es que “outOfNetworkIndicator” toma los valores 1 (CUE-OUT) y 0 (CUE-IN). El propio sistema SCTE emparejará ambos marcadores basándose en el “spliceEventId”.

Nota: Los marcadores de posición compatibles son: {timestamp} {timestampunix} {airtimenext} {airtimenextunix} {plannednext} {plannednextunix} {clipid} {blockid} {blockduration} {clipduration}


Probar el marcador SCTE-35 a nivel local

Abre PLAYDECK. Todavía no es necesario que cargues ningún clip. Haz clic con el botón derecho del ratón en cualquier botón de ACCIÓN, crea una nueva acción y selecciona COMANDOS/SCTE:

Inserta la etiqueta de muestra SCTE-35 haciendo clic en SCTE-35. Cierra las ventanas emergentes pulsando «Aceptar» (dos veces):

Ahora podemos enviar una etiqueta SCTE-35 a cualquier flujo compatible (UDP, DVB, SRT). Si haces clic en «Acción» ahora, no pasará nada, ya que aún no tenemos ningún flujo.

Creemos un flujo UDP de prueba en el que simplemente enviemos la salida a un archivo, para no tener que lidiar (todavía) con cuestiones relacionadas con el servidor. Copia la configuración tal y como se indica a continuación e inicia el flujo con “START NOW”. No olvides habilitar SCTE-35 en «Parameter»:

Ahora queremos enviar nuestra etiqueta SCTE-35 de muestra a la transmisión. Cierra los ajustes y haz clic varias veces en el botón de acción; después, vuelve a los ajustes y detén la transmisión con «STOP NOW».

PLAYDECK ha registrado tus etiquetas SCTE-35. Puedes consultar los registros volviendo a tu código SCTE-35 en el botón «Acción» y haciendo clic en «ABRIR REGISTROS DE EVENTOS»:

También puedes hacer visibles las etiquetas SCTE-35 que se encuentran en tu transmisión grabada. Para ello, necesitamos una herramienta independiente llamada “DVBInspector”. Esta herramienta también requiere el entorno de ejecución de Java, así que descarga ambos:

Esta herramienta requiere el entorno de ejecución de Java. Si aún no lo tienes instalado, puedes descargarlo aquí:
https://www.oracle.com/java/technologies/downloads/

Ahora descomprime el archivo “DVBinspector-1.18.0-dist.zip” (o similar) y ejecuta “DVBinspector-1.18.0.jar”. A continuación, arrastra y suelta tu archivo TS en la aplicación. Abre el árbol de la siguiente manera para ver tu marcador SCTE.


Probar el marcador SCTE-35 en Nimble Streamer

Nimble Streamer es nuestro servicio de streaming preferido. Es rentable, fácil de configurar y mantener, pero ofrece la complejidad necesaria para casos de uso avanzados:

https://softvelum.com/nimble/

Instala la versión de prueba de 14 días de Nimble en el mismo equipo en el que se ejecuta PLAYDECK. No es imprescindible, pero simplifica las cosas, ya que así te ahorras tener que configurar la red. Nimble también le pedirá que cree una cuenta en WMSPanel, una herramienta de configuración web para Nimble, ya que el propio Nimble Streamer se instala sin interfaz de usuario.

INFORMACIÓN: Para que esta muestra SCTE-35 funcione, NO es necesario disponer de los complementos “Nimble Live Transcoder” ni “Nimble Advertizer” si la pruebas en una instalación en vivo. En la instalación de prueba, estos complementos están desactivados de forma predeterminada.

Una vez que Nimble esté en funcionamiento, hay un ajuste más que debes realizar manualmente. Abre el archivo de configuración del servidor Nimble aquí:
c:\Archivos de programa\Nimble Streamer\conf\nimble.conf

Al final de este archivo, añade las siguientes líneas y guarda el archivo.

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: Debes reiniciar Nimble ahora mismo, ya sea reiniciando el ordenador o reiniciando manualmente el servicio de Windows “Nimble Streamer”.

Aquí tienes de nuevo las líneas, pero con comentarios para ti (no las utilices):

scte35_processing_enabled = true  // Habilita el módulo SCTE en general. Es necesario para el resto de opciones
scte35_forwarding_enabled = true  // Permite el paso de los marcadores SCTE-35 a través de Live Transcoder
hls_ad_scte35_forwarding_enabled = true  // Habilita el reenvío de marcadores SCTE-35 a flujos HLS
hls_ad_marker_format = cue  // Configura Nimble para que utilice marcadores CUE-OUT y CUE-IN
hls_ad_splice_out_cont_marker_enabled = true  // Habilita la inserción automática de EXT-X-CUE-OUT-CONT

Ahora vamos a configurar tus transmisiones en WMSPanel:
En primer lugar, vamos a definir nuestra secuencia entrante. Ve a “Nimble Streamer” en el menú, selecciona “MPEGTS In” y haz clic en el botón “Añadir secuencia UDP”; a continuación, añade la secuencia entrante de esta manera. Puedes utilizar cualquier otro puerto si el 5001 ya está en uso.

A continuación, vamos a configurar el formato del flujo de salida. Queremos utilizar HLS aquí para demostrar la conversión del marcador SCTE de UDP a HLS. En la misma página, ve a “MPEGTS Out” y haz clic en el botón “Añadir flujo de salida”, luego añádelo de esta manera. Asegúrate de seleccionar tu flujo de entrada como fuente de vídeo y audio.

A continuación, seguimos con la configuración en PLAYDECK. Ve a la sección “Stream Output Settings” (Configuración de salida de la transmisión) y cambia la URL de la transmisión a «udp://127.0.0.1:5001».

INFORMACIÓN: Puedes elegir el códec de vídeo que prefieras. En este caso, he elegido H.264 para que mi GPU NVIDIA se encargue de la codificación, lo que reducirá el uso de la CPU. Activa también SCTE-35 en “Parámetros”.

INFORMACIÓN: Ten en cuenta que PLAYDECK no es capaz de transmitir directamente en formato HLS. Si seleccionas “Apple HTTP Live Streaming” como formato de transmisión, la salida se guardará en un archivo. Por lo tanto, debe especificar una ruta de destino como “URL de transmisión”, por ejemplo, “c:\Users\Public\Documents\stream.m3u8”. A continuación, utilice ese archivo para transmitir mediante cualquier servidor de streaming. PLAYDECK no puede escribir etiquetas SCTE de HLS en el archivo de manifiesto HLS (el archivo *.3u8).

A continuación, queremos que PLAYDECK envíe automáticamente SCTE, no solo mediante un botón, sino en función del clip. Para ello, insertamos cualquier clip y hacemos clic en el icono «COMANDOS» de la barra de herramientas; a continuación, añadimos un nuevo comando, seleccionamos «TIEMPO DE REPRODUCCIÓN 0» e insertamos la muestra SCTE-35:

INFORMACIÓN: También puedes añadir marcadores SCTE a bloques, superposiciones y botones de acción.

Ahora pongámonos manos a la obra: pon el clip en “CUE” y “PLAY” e inicia la retransmisión en la configuración de PLAYDECK. Ve al WMSPanel y abre en el menú «Nimble Streamer» la opción «Live Streams». Ahora verás una transmisión en directo en curso. Haz clic en ella y selecciona el signo de interrogación situado en el extremo derecho, como se muestra aquí.

En la lista de “URL para reproducir”, selecciona la que termine en “playlist.m3u8” y haz clic en “Copiar”. A continuación, pega esta URL en cualquier navegador que tenga integrado o instalado un reproductor HLS. Para este ejemplo, utilizaremos el navegador CHROME con la siguiente extensión de reproductor HLS:
https://chromewebstore.google.com/detail/hls-player-m3u8-streaming/eakdijdofmnclopcffkkgmndadhbjgka

Una vez que hayas introducido esa URL en Chrome, verás que tu transmisión de PLAYDECK se reproduce inmediatamente. Ahora te mostraré cómo supervisar tu marcador SCTE. En Chrome, pulsa F12 para abrir las Herramientas de desarrollador. En la parte superior, haz clic en la pestaña “Red”. Ahora verás varios archivos “chunks.m3u8”, que forman parte de tu transmisión. Haz clic en uno de los archivos Chunk (también llamados HLS Manifest) y selecciona “Vista previa” junto a él. Ahora verás la etiqueta HLS SCTE. Si no está ahí, haz clic en otro chunk, ya que enviamos el SCTE solo al inicio del clip.

¡Ya está! Hemos alcanzado nuestros objetivos de prueba. Próximamente publicaremos más información que podría resultarte de interés.


Información adicional

Inicio de sesión en PLAYDECK

Registramos todas las etiquetas SCTE entrantes y salientes. Esto te ofrece además la posibilidad de comprobar tus etiquetas SCTE salientes simplemente conectando la salida a una entrada (tanto SDI como flujos) y dejando que PLAYDECK detecte tus etiquetas SCTE. Puedes abrir los archivos de registro desde el menú principal “Logs”:


Registro en Nimble Streamer

Si algo sale mal o no ocurre como se esperaba, un buen punto de partida es revisar los archivos de registro de Nimble. En Windows, el registro se encuentra aquí:
c:\Archivos de programa\Nimble Streamer\log

El registro está habilitado de forma predeterminada en la versión de prueba de Nimble, pero en caso de que necesites activarlo, aquí tienes los parámetros para el archivo “nimble.conf”.

log_access = archivo
logging = depuración

Ahora abre el archivo de registro y busca “SCTE”. Es posible que veas algo como esto, lo que indica que hay un error ortográfico en tu marcador SCTE en PLAYDECK:

[SCTE35] Tipo de comando de empalme no admitido: type=6 para [mynewapp/mynewstream]

Si tu marcador SCTE se ha analizado correctamente en Nimble, tendrá este aspecto:

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



Herramienta: TSDuck

Se trata de una colección de herramientas y complementos con una amplia biblioteca para manipular flujos de transporte MPEG. Con ella, podrás insertar marcadores SCTE fuera de PLAYDECK basándote en un algoritmo u otra lógica compleja.

https://tsduck.io/


Herramienta: x9k3

Esta herramienta también puede convertir marcadores SCTE-35 de flujos UDP o archivos MPEG-TS en etiquetas HLS SCTE. Esto te permite instalar un servidor de streaming que no disponga de conversión automática de SCTE-35 a HLS.

https://github.com/futzu/x9k3