Envío de SCTE-35 al servidor Stream

Los marcadores SCTE se utilizan principalmente para insertar anuncios en la señal de vídeo, indicando al receptor (por ejemplo, el servidor 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. Puedes obtener más información sobre SCTE-35 en general en este sitio web.

En este artículo:
Introducción
Ejemplos de marcadores SCTE-35
Prueba del marcador SCTE-35 a nivel local
Prueba del 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 activar la opción SCTE en las opciones de tu Stream:


Ejemplos de marcadores SCTE-35

Veamos algunos ejemplos de SCTE-35. Se trata de la forma 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 Stream, el formato podría ser diferente. 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 el valor 1 (CUE-OUT) o 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}


Prueba del 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 dispositivo Stream compatible (UDP, DVB, SRT). Si haces clic en «Acción» ahora, no pasará nada, ya que aún no disponemos de un dispositivo Stream.

Vamos a crear una prueba de UDP Stream, en la que simplemente enviaremos 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 Stream con “START NOW”. No olvides activar el SCTE-35 con «Parámetro»:

Queremos enviar ahora nuestra etiqueta de muestra SCTE-35 al Stream. Para ello, cierra «Configuración» y pulsa el botón de acción varias veces; a continuación, vuelve a «Configuración» y detén el Stream con la opción «DETENER AHORA».

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

También puedes hacer visibles las etiquetas SCTE-35, que se encuentran en tu Stream grabado. Para ello, necesitamos una herramienta independiente llamada “DVBInspector”. Esta herramienta también requiere el entorno de ejecución de JAVA, así que descárgalas ambas:

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.


Prueba del marcador SCTE-35 en Nimble Streamer

Nimble Streamer es nuestro servicio Streaming preferido. Es rentable, fácil de configurar y mantener, pero cuenta con 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 realizar una configuración de red. Nimble también te pedirá que crees una cuenta en WMSPanel, que es 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 producción. 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  // Activa 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 las secuencias 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 tu Streams en WMSPanel:
En primer lugar, vamos a definir nuestra señal entrante Stream. Ve a “Nimble Streamer” en el menú, selecciona “MPEGTS In” y haz clic en el botón “Añadir flujo UDP”; a continuación, añade el flujo entrante de la siguiente 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 mostrar 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”; a continuación, añádelo de esta manera. Asegúrate de seleccionar el flujo de entrada como fuente de vídeo y audio.

A continuación, seguimos con la configuración en PLAYDECK. Ve a los ajustes de salida del Stream y cambia la URL del Stream por “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 para el archivo como “URL de Stream”, por ejemplo, “c:\Users\Public\Documents\stream.m3u8”. A continuación, utiliza ese archivo para transmitir el contenido mediante cualquier servidor HLS. 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 «PLAY TIME 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 en marcha: pon el clip en “CUE” y “PLAY” y inicia el Stream en los ajustes de PLAYDECK. Ve al WMSPanel y abre, desde el menú «Nimble Streamer», la opción «Live Streams». Ahora verás una transmisión en directo en marcha. 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 voy a enseñar 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”. Verás varios archivos “chunks.m3u8”, que forman parte de tu transmisión. Haz clic en uno de los archivos “chunk” (también llamados «manifiesto HLS») y selecciona «Vista previa» junto a él. Ahora verás la etiqueta SCTE de HLS. Si no aparece, 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 oportunidad de comprobar tus etiquetas SCTE salientes simplemente conectando en bucle la salida a una entrada (tanto SDI como Streams) y dejando que PLAYDECK detecte tus etiquetas SCTE. Puedes abrir los archivos de registro desde el menú principal “Logs”:


Inicio de sesión 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 los marcadores SCTE-35 de archivos UDP Streams o MPEG-TS en etiquetas SCTE de HLS. 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