Skip to content

Recepción de ST 2110

ST 2110 es la señal de estudio transportada por una red IP: el vídeo sin comprimir, el audio y los datos auxiliares viajan en grupos multicast distintos, atados por un reloj PTP común. Mcaster toma esa señal como una fuente de stream corriente: las pistas entran en la cadena, se transcodifican, se graban y se entregan con los mismos medios que una señal de satélite o una fuente SRT.

Una cosa distingue al 2110 de cualquier otra entrada, y la configuración empieza por ella: aquí la fuente no es una dirección sino un conjunto de pistas. Vídeo, audio y datos auxiliares son tres grupos distintos con tres juegos de parámetros distintos, y el stream se arma con ellos y no con una sola URL.

Qué debe cumplir la red

Un flujo sin comprimir son gigabits por segundo, y la red se prepara para ello antes de que nadie abra el panel.

  • Ancho de banda por flujo. 1080p60 a 10 bits son unos 2,5 Gbit/s y 260 mil paquetes por segundo. Una interfaz de 10 Gbit/s aguanta tres flujos así, no cuatro: el resto es margen para las ráfagas.
  • El puerto lo elige el operador, no la estación. La suscripción sale por la interfaz indicada en los ajustes de la entrada, y ahí es donde el switch entrega el grupo. Un puerto indicado sin ancho de banda suficiente es el diagnóstico más frecuente: el flujo «llega» mientras la imagen se deshace, porque quien descarta paquetes es el switch — y los contadores del propio equipo siguen limpios.
  • PTP es obligatorio. El reloj de 2110 viene del dominio PTP, y la estación concilia su propia escala de tiempo con él. Un reloj desviado se ve en el estado del stream aparte de los errores de recepción: no son lo mismo.
  • Multicast e IGMPv3. Los grupos se entregan por la suscripción de la estación; cuando varios emisores alimentan un grupo y usted necesita uno de ellos, su dirección va al campo Origen (SSM).

Conecte las pistas

Cree un stream, abra la pestaña Fuentes y pulse + Añadir fuente. El protocolo es ST 2110.

Entrada ST 2110: interfaz, direccionamiento y los tres receptores

Los campos de toda la entrada:

  • Interfaz — el nombre del puerto (dpdk0) o su dirección. Aquí no existe el valor «cualquiera», y es deliberado: la interfaz decide por dónde entrega el switch el grupo.
  • Direccionamiento — quién da las direcciones a las pistas. De eso trata la sección siguiente.
  • Reducir 10 bits a 8 en la recepción — ahorra ancho de banda hasta el transcodificador a costa de los dos bits bajos. Desactivado por omisión.

Los receptores los anuncia la propia entrada: vídeo, audio y datos auxiliares se muestran siempre, y no se pregunta por su rol. El controlador ve exactamente esos tres receptores y les trae las direcciones. Una pista así no está en la configuración mientras no haya nada que decir de ella.

Puede haber más pistas de un mismo tipo: una segunda pista de audio para otro idioma se crea con Añadir pista en el bloque Pistas añadidas. Allí el rol (audio 2) lo pone usted, y hay que nombrar el tipo explícitamente — de una cadena libre no se deduce. La edición del rol se aplica cuando el campo pierde el foco.

Cada pista tiene la casilla Recibir: desmarcarla mantiene la pista en la configuración con todos sus parámetros, pero no se abre ningún socket.

No olvide Guardar: la edición de la entrada llega al servidor solo con el botón.

Dos formas de direccionar una pista

La forma se elige en el campo Direccionamiento y vale para toda la entrada, no para una pista suelta: una red o la gobierna un controlador o no, y una pista conmutada por el controlador junto a otra escrita a mano no es un escenario sino un malentendido que alguien tendría que depurar.

  • Controlador (IS-05) — el camino principal. El operador enciende la entrada y nombra la interfaz; de dónde recibir lo dice el controlador, y para todas las pistas a la vez.
  • A mano — lo mismo hecho por usted: el operador escribe la dirección y el formato de cada pista. Sirve para una red sin controlador y para pruebas.

El archivo de transporte no está en esa lista, y es deliberado. El SDP lo envía el controlador, y describe una conexión ya hecha en lugar de ser una manera de establecerla: nadie escribe SDP a mano. Una pista conmutada lleva la línea Conmutado por el controlador con el identificador del emisor, y debajo el Archivo de transporte, solo de lectura. Eso es diagnóstico — la respuesta a «de dónde llega esto ahora mismo» — y no un campo de entrada.

El direccionamiento a mano se ve así:

Direccionamiento a mano: grupo, puerto y formato

Una dirección sin formato se rechaza, y no es puntillosidad: el medio sin comprimir no lleva geometría propia dentro del flujo. Un paquete 2110-20 no declara ni el tamaño del cuadro, ni la frecuencia, ni el submuestreo — el receptor tiene que saberlos de antemano, o no hay contra qué analizar las líneas. De ahí el juego de campos: Ancho, Alto, Profundidad de bits, Submuestreo, Frecuencia de cuadros, Entrelazado, Transporte por campos (segmented).

La frecuencia se escribe como fracción, igual que en SDP: 60000/1001, no 59.94. El redondeo no es un detalle aquí — con él no se puede reconstruir la rejilla de marcas de tiempo.

De los esquemas de submuestreo, el que hoy llega a la cadena es YCbCr 4:2:2 con 8 o 10 bits. Los demás — 4:2:0, 4:4:4, RGB — se analizan y se reparten en grupos de píxeles, pero de ellos no se arma ningún cuadro: la pista se detiene y el motivo nombra el esquema y la profundidad.

Los dos campos de un cuadro entrelazado los une la propia estación; el desentrelazado sigue siendo trabajo del transcodificador.

Conmutación por un controlador NMOS

El direccionamiento a mano es el camino de reserva. La estación hace lo que la infraestructura de estudio espera de ella: se anuncia a un controlador por IS-04 y le entrega la conmutación de sus receptores por IS-05. El controlador escribe él mismo el archivo de transporte en la pista — la misma edición de configuración que habría hecho un operador.

El anuncio se configura en los ajustes del nodo, sección NMOS:

La sección NMOS en los ajustes del nodo

  • Interfaz — el puerto anunciado. Un campo vacío significa que NMOS está apagado y el nodo no aparece siquiera en el registro.
  • Identidad — de ella se derivan los identificadores de los recursos; vacío significa el nombre del host. Si la cambia, cambian todos los identificadores del nodo y el controlador ve un dispositivo nuevo.
  • Etiqueta — lo que se muestra en el controlador.
  • Dónde sirve este nodo las interfaces NMOSPuerto e interfaz propios (recomendado) o Puerto HTTP compartido del nodo. El propio se define con Interfaz de las interfaces NMOS (la red de control; vacío significa la interfaz de medios) y Puerto de las interfaces NMOS (8090 por omisión).

La elección es sobre el acceso, no sobre la comodidad: la activación IS-05 no se autentica, y en el puerto compartido las interfaces aparecen en todos los puertos HTTP del nodo, incluidos los públicos. Solo la red puede limitar quién llega hasta ellas — por eso se recomienda un puerto aparte en la red de control.

La activación la sirve quien es propietario de la configuración: para un nodo gestionado por un clúster, el propio clúster (en sus ajustes es la sección NMOS (ST 2110) con la casilla Conmutar entradas a través de central); para una caja autónoma, ella misma. En el lado del nodo no hay nada que configurar para eso.

Sobre los receptores importa una cosa: un nodo nunca tiene receptores de sobra. El controlador ve exactamente los que se derivan de los streams, y una activación no crea ningún stream. Por eso el stream que se va a conmutar se crea de antemano, con una entrada ST 2110 en modo Controlador (IS-05), donde las pistas aún no tienen direcciones. Mientras el stream no exista, el controlador no tiene nada que conmutar.

Una pista conmutada lo dice en el formulario: Conmutado por el controlador con el identificador del emisor. Esa línea la rellena el controlador y no se puede editar.

La estación busca por sí misma un registro y, al encontrarlo, se registra en él y mantiene viva la inscripción con un latido. Si no hay registro en la red, habla directamente con el controlador, punto a punto.

Qué llega al stream

El stream arranca en cuanto empieza a llegar la primera pista y no espera a las demás. El estado de la recepción está en la pestaña Fuentes, en el bloque Salud de la fuente:

Salud de una fuente ST 2110

La tarjeta muestra el estado, la dirección de entrada, el conjunto de pistas y el bitrate de recepción. Las cifras de la captura son reales: 2501 Mbit/s es una pista de vídeo 1080p60 de 10 bits más dieciséis canales de audio L24.

El conjunto de pistas está en la pestaña Configuración básica, en el bloque Contenido del flujo:

Pistas de un stream sin comprimir

El códec nombra la disposición en el cable y no aquello en lo que el flujo se convertirá: yuv422p10st para el vídeo de 10 bits y l24 para el audio. La estación no mezcla canales a la baja — toma tantos como declare el emisor y los entrega como una sola pista.

Un flujo sin comprimir necesita transcodificación

Un stream que no tiene más que una entrada 2110 es un estado de funcionamiento, no una avería: arranca, recibe datos y pasa cuadros a los suscriptores. Pero en él no hay segmentación, y la lista maestra llega sin una sola pista: una pista sin comprimir no puede ir en ella — un reproductor se rompería analizando su códec en lugar de recibir un honesto «no hay nada que reproducir».

Por eso el panel ofrece un enlace junto al conjunto de pistas — Transcodificar para reproducir en la web: abre la pestaña Transcodificador con un perfil listo. Después de eso el stream se reproduce, se graba en el archivo y alimenta los envíos como cualquier otro.

Los indicadores de cadena sin comprimir y de segmentación inactiva se muestran aparte en el estado del stream, para que ese estado no se confunda con un fallo.

Las miniaturas de un flujo sin comprimir funcionan sin transcodificador: se toman directamente de la pista sin comprimir, también hacia el archivo.

Datos auxiliares y subtítulos

Una pista del tipo datos auxiliares (2110-40) se recibe y se analiza en pares DID/SDID. Lo que ocurre después depende de qué sean esos datos:

  • El teletexto OP-47 llega al stream como una pista de teletexto — la misma que produce el teletexto de MPEG-TS.
  • Los subtítulos CEA-708/608 se analizan y el contador de su par DID/SDID crece, pero en el stream no aparece ninguna pista de subtítulos: esos subtítulos viven dentro del vídeo codificado, y entregarlos a la salida todavía no forma parte de la estación.
  • Los pares desconocidos se cuentan y se descartan: no existe una pista de «datos auxiliares en bruto» que salga hacia fuera.

Un paquete que no supera su suma de control se descarta con un contador; una paridad rota se cuenta pero no descarta el paquete.

Ajuste fino

Normalmente no hace falta: un campo vacío significa el valor por omisión de la estación, no «apagado». Vive en dos bloques plegados.

Ajuste de esta pista — lo que pertenece a un grupo:

  • Núcleo de CPU — fija el hilo de recepción de la pista a un núcleo. Cada pista tiene su propio hilo, por eso cada una tiene su propio campo. Vacío lo deja al planificador.
  • Cola AF_XDP — la cola de la tarjeta que la pista toma para sí, saltándose el socket corriente. Vacío significa socket corriente.

Ajuste de la entrada — lo que es común:

  • Búfer del socket (bytes) — cuánto retiene el núcleo en el búfer de recepción de cada socket.
  • Cola de cuadros (bytes) — el límite de la cola de una pista entre la recepción y la cadena. Al desbordarse, lo que sobra se descarta con un contador: la recepción no se detiene.
  • Cuadro de audio (ms) — la granularidad de los mensajes de audio. Menos significa menos retardo y más mensajes.

Qué está soportado

Capacidad Estado
Vídeo 2110-20: YCbCr 4:2:2 con profundidad de 8 y 10 bits
Los 10 bits se conservan en la disposición del cable, sin reducción
Otros esquemas 2110-20: 4:2:0, 4:4:4, RGB no, se analizan pero no dan cuadro — el motivo nombra el esquema
Entrelazado: los dos campos se unen en un cuadro
Transporte por campos (segmented) la casilla se acepta pero todavía no afecta a la recepción
Audio 2110-30: L16 y L24, cualquier número de canales, ptime del SDP
Datos auxiliares 2110-40: despaquetizado, suma de control, contadores
Teletexto OP-47 como pista de teletexto
Subtítulos CEA-708/608 se analizan y se cuentan, no se entregan como pista
Direccionamiento por archivo de transporte (SDP) enviado por un controlador
Suscripción a un emisor concreto (SSM, IGMPv3)
Varias pistas de un mismo tipo en una entrada
NMOS IS-04: anuncio del nodo, mDNS, registro en un registry
NMOS IS-05: receptores conmutados por un controlador
Que la estación descubra por su cuenta emisores ajenos no, la dirección la trae un controlador o un operador
SDP con varias líneas de medio en una pista no, un bloque de direccionamiento describe una pista
Salida 2110 (la estación como emisor) no

Aplicación de los cambios

Cambiar el grupo, el puerto, el emisor o el archivo de transporte recrea el socket con una suscripción nueva — la recepción de esa pista se interrumpe mientras las demás siguen. Los campos que no afectan a la recepción se aplican al vuelo.

Comprobación

Compruebe en este orden, porque cada paso solo tiene sentido cuando el anterior ha pasado:

  • Los paquetes llegantcpdump -i <interfaz> host <grupo> en la propia máquina de la estación. Una comprobación desde una máquina vecina no responde a esta pregunta: la entrega del grupo sigue a la suscripción, y quien la hizo es la estación.
  • Las pistas se levantaron — la tarjeta del bloque Salud de la fuente muestra el conjunto de pistas y el bitrate de recepción.
  • El reloj no se ha desviado — la desviación del reloj en el estado del stream. Sin sincronización dejan de funcionar el archivo y el rebobinado, y la cura está en el dominio PTP, no en los ajustes de la entrada.
  • La imagen es la esperada — la vista previa del stream: la geometría y el submuestreo se ponen a mano en el direccionamiento manual, y un error ahí da líneas torcidas en vez de una negativa a recibir.

Un script para un banco sin controlador

Un banco de pruebas normalmente no tiene controlador NMOS, y sin embargo hacen falta las direcciones de los grupos: en la mayoría de los emisores cambian de una activación a otra, así que anotarlas una vez no sirve.

Para ese caso se adjunta un pequeño script — nmosctl.py. Solo necesita Python 3; no tiene dependencias, y para encontrar nodos se usa avahi-browse.

python3 nmosctl.py discover                       # nodos de la red (mDNS)
python3 nmosctl.py list 10.0.0.90:8090            # dispositivos, emisores, receptores
python3 nmosctl.py enable 10.0.0.90:8090 <sender> # habilitar un emisor
python3 nmosctl.py sdp 10.0.0.90:8090 <sender>    # su archivo de transporte

El texto que devuelve sdp es el que trae un controlador cuando conmuta una pista: en el banco sirve para comprobar el direccionamiento a mano, de donde se copian el grupo, el puerto y el formato.

Los dos tropiezos más frecuentes:

  • Mientras un emisor no esté habilitado no hay archivo de transportesdp responde con un error, porque la dirección del grupo aparece solo al activarse.
  • La dirección cambia en cada activación. Tómela de nuevo en lugar de sacarla de sus apuntes: una suscripción al grupo anterior da cero paquetes en silencio.

Qué sigue