Metadatos de banda lateral

Anterior Siguiente

Los metadatos de banda lateral (SBM) son un mecanismo de transporte de metadatos ofrecido a los reproductores que no pueden usar metadatos multiplexados en el propio stream (como con FLV, Shoutcast V1/V2, etc.), ya sea porque es imposible, difícil o porque requiere muchos recursos. Por ejemplo, los reproductores que usan la etiqueta HTML5 <audio> o que delegan la reproducción de stream al reproductor multimedia estándar del sistema operativo (por ejemplo, iOS, Android), necesitan una forma de recibir puntos de referencia sin tener que procesar el stream en sí.

Esto se logra al usar una conexión separada de metadatos (correlacionada con el stream) y emplear eventos enviados por el servidor (SSE). Los reproductores son responsables de poner en cola los eventos recibidos y activarlos cuando el reproductor multimedia alcanza la marca de tiempo correcta asociada con cada evento individual.

Identificación de sesión de metadatos de banda lateral

Para correlacionar una conexión de stream con su conexión de metadatos asociada, es necesario usar una identificación común compartida por ambas conexiones.

El reproductor es responsable de generar este ID de sesión SBM, que toma la forma de un UUID Tipo 4 (es decir, aleatorio), formateado como una cadena hexadecimal minúscula, como:

fde807eb-6931-47db-a758-9c3b0c7e84d5

El reproductor también es responsable de transmitir la identificación de sesión SBM al conectarse al stream, como así también el extremo SBM SSE. Esto se explica en las siguientes secciones.

¡El reproductor debe generar una nueva identificación de sesión SBM cada vez que se conecte o se vuelva a conectar con el stream!
¡Advertencia! Si el ID de sesión SBM está mal formado, se rechazarán las conexiones que utilicen este ID.

Conexión de stream

Para los reproductores HTML5, el reproductor debe conectarse al stream estándar Shoutcast o HTTP Live Streaming (HLS) (es decir, los transportes shoutcast y hls ). Además, si el reproductor tiene la intención de utilizar SBM, debe incluir el ID de sesión de metadatos de banda lateral descrito en la sección anterior mediante el parámetro de consulta sbmid . Si el reproductor no tiene la intención de utilizar SBM, no debe incluir el parámetro sbmid (ya que el mantenimiento de la información de la sesión SBM cuesta algunos recursos en los servidores de streaming).

Por ejemplo:

http://1234.live.streamtheworld.com:80/KROQFM_SC?sbmid=fde807eb-6931-47db-a758-9c3b0c7e84d5

Como se mencionó anteriormente, debe generarse una nueva identificación de sesión SBM cada vez que el reproductor se conecta o reconecta con el stream.

Este parámetro de consulta es adicional a cualquier otro parámetro utilizado para el direccionamiento, etc. Consulte la Especificación técnica de publicidad para obtener más información.

Una vez establecida la conexión de stream, el reproductor puede crear su conexión de metadatos en Conexión de metadatos.

Conexión de metadatos

Para recibir sus metadatos, el reproductor utiliza una conexión SSE (eventos enviados por el servidor) al extremo de la conexión de metadatos. El reproductor debe conectarse a la misma instancia del servidor de streaming a la que se ha conectado para su stream (es decir, la misma IP y el mismo puerto).

La conexión de metadatos utiliza el sufijo (especificado por el elemento <sse-sideband mountSuffix="..."> recibido de la API de aprovisionamiento de reproductor), agregado al nombre del montaje. El mismo sbmid que se utilizó para la conexión de stream también debe ser pasado por el reproductor. Por ejemplo, para la conexión de stream mostrada en el ejemplo anterior, el URL de conexión de metadatos asociado sería:

http://1234.live.streamtheworld.com:80/KROQFM_SBM?sbmid=fde807eb-6931-47db-a758-9c3b0c7e84d5

Si, por alguna razón, el reproductor no puede conectarse al extremo SBM o recibe un error del MG, debe acelerar sus intentos de reconexión, utilizando el mismo algoritmo de retroceso exponencial que se utiliza para las conexiones de stream (como se detalla en este documento).

Los puntos de referencia individuales se enviarán como eventos separados enviados por el servidor a través de la misma conexión. De este modo, el reproductor continúa conectado al extremo SBM hasta que se cierre la conexión del stream. Si la conexión SBM se cierra de forma prematura, y la propia conexión de stream continúa activa, el reproductor debe reconectarse al extremo SBM usando la misma identificación de sesión SBM utilizada anteriormente. Sin embargo, si la conexión de stream se ha cerrado (voluntariamente o no), la conexión SBM también debe cerrarse. La reconexión requiere la generación de un nuevo ID de sesión SBM, antes de volver a conectarse a los extremos de stream y SBM.

Manejo de metadatos del reproductor

Con SBM, los puntos de referencia llegarán antes de tiempo, y esto debe ser gestionado por el reproductor. El reproductor debe poner en cola todos los puntos de referencia recibidos (como eventos enviados por el servidor) a través de la conexión SBM. Esta cola debe admitir el retiro de eventos de la cola según su marca de tiempo. La eliminación de la cola se producirá (normalmente) en un controlador de eventos timeupdate adjunto a la etiqueta HTML5 <audio> . La cola debe devolver el siguiente evento en la cola, siempre y cuando su marca de tiempo sea inferior a la marca de tiempo actual del stream. Cuando un evento se retira de la cola, debería gestionarse como un punto de referencia normal (es decir, accionando cambios de etiqueta, presentaciones de anuncios complementarios, etc.)

Carga de metadatos de banda lateral

Los metadatos se envían como datos con formato JSON. El formato JSON es un mapeo directo de los puntos de referencia FLV a JSON.

Todos los puntos de referencia cumplen con el diccionario de metadatos STWCue de Triton Digital. Los montajes que usan AndoXML no admiten metadatos de banda lateral HTML5.

Recuerde que cada línea tendrá el prefijo "data:" ya que los metadatos se envían utilizando el protocolo SSE.

Punto de referencia de "anuncio" de muestra

{
  "type": "onCuePoint",
  "name": "ad",
  "timestamp": 114832,
  "parameters": {
    "ad_id": "cm-2134",
    "ad_type": "break",
    "cue_time_duration": "32000",
    "cue_title": "Annoying Ad"
                }
}

Al igual que con los puntos de referencia estándar STWCue, todos los valores de los parámetros son cadenas.  Tenga en cuenta que el atributo de marca de tiempo es un número entero y representa el número de milisegundos desde que se inició el stream.

Es posible recibir cuatro tipos de eventos, como lo muestra la tabla a continuación.

Tipos de eventos de punto de referencia de "anuncios"

Tipo,Descripción
onMetaDataRecibido durante el arranque inicial del stream. Suele contener información acerca del propio stream (como ancho/altura del video, etc.)
onCuePointEs un punto de referencia normal. Puede aparecer en cualquier lugar del stream. Debería gestionarse del mismo modo que los puntos de referencia estándar FLV.
onCuePointPreviewEs una previsualización del punto de referencia que se usa para precargar recursos.
onCuePointPreviewExpiredHa vencido la previsualización de un punto de referencia, y sus recursos deberían liberarse.
¡Los jugadores deben ignorar los tipos de eventos que no reconocen o no saben cómo manejar! Esta lista de tipos de eventos se hará más extensa a futuro, y los reproductores no deberían ocasionar comportamientos no deseados al recibir un tipo no conocido.