Análisis de flujos¶
El analizador de flujos del streamer mide y analiza distintos parámetros del flujo MPEG-TS, lo que permite evaluar su calidad.
Input speed — tasa (bitrate) del flujo en kbps. Se mide tras filtrar por las marcas PCR. Se muestra como un gráfico que también incluye el bitrate de salida tras el sincronizador.
Raw data speed — la velocidad de recepción de datos por el protocolo elegido. Overhead — el porcentaje añadido por la sobrecarga del protocolo.
CC errors — pérdidas de paquetes (CC, discontinuity). Se muestran contadores por intervalo y un contador acumulado durante el stream uptime. También se presenta un gráfico del historial.
Scrambled — contadores de paquetes MPEG-TS ES codificados. Si es ≠ 0 hay fallos de descodificación de canales cifrados.
Sync by — fuente de sincronización — PCR.
PCR interval — intervalo entre marcas PCR. Recomendado: no superior a 50 ms.
PCR jitter — caracteriza la precisión de sincronización del flujo de salida; se mide como la diferencia entre el PCR y el tiempo real.
Analyze PCR PMT Gap — se activa mediante un ajuste específico. Se analiza la dispersión entre PCR y PTS/DTS para cada ES. El historial se muestra como un gráfico. Una dispersión excesiva puede causar problemas en reproductores con un búfer de sincronización pequeño. El análisis se activa mediante el ajuste Analyze PAT/PMT/KF.
PAT interval y PMT interval — se mide el intervalo entre tablas PAT (PMT). Recomendado: no superior a 500 ms. El análisis se activa con el ajuste Analyze PAT/PMT/KF.
Key Frame interval (intervalo GOP) — el intervalo entre fotogramas clave (inicios de GOP). Para reproductores que se conectan al flujo en puntos aleatorios se recomienda no más de 1 s. El análisis se activa mediante el ajuste Analyze PAT/PMT/KF.
IDR interval — el intervalo entre fotogramas IDR, que son verdaderos puntos de acceso aleatorio (SPS / PPS / IDR). Se muestra solo si la fuente emite con IDR. Si IDR interval coincide aproximadamente con Key Frame interval, el flujo tiene closed-GOP: cada GOP se abre con un punto de entrada completo y el reproductor puede arrancar desde cualquier segmento. Si la métrica está ausente, el flujo es open-GOP sin IDR — hay fotogramas clave, pero no son puntos de entrada completos. Esta relación hace visible de inmediato el tipo de estructura GOP de la fuente. El análisis se habilita con el ajuste Analyze PAT/PMT/KF.
PAT/KF interval — mide el intervalo medio entre el inicio y el fin de la secuencia PAT/PMT/SPS/PPS/KF. De él depende el tiempo de arranque de la reproducción en reproductores que se conectan al flujo en puntos aleatorios. La medición se toma al inicio del KF en el flujo, por lo que el tiempo de arranque real del reproductor será mayor. El análisis se activa mediante el ajuste Analyze PAT/PMT/KF.
Activar Analyze PAT/PMT/KF pone el analizador del flujo en modo permanente, lo que aumenta la carga de CPU.
Control del jitter¶
Para gestionar el jitter existen varios ajustes en el stream:
Jitter Compensation Delay (ms) — función de compensación del jitter de red; fija el tamaño del buffer. Descripción ampliada: https://forum.pstreamer.tv/viewtopic.php?t=25
Jitter Auto sync — activa 2000 ms para protocolos basados en TCP (HTTP, HLS); para los UDP el valor sigue siendo 500 ms.
Limit PCR gap (ms) — comprueba cuánto puede saltar el PCR; si lo supera, se realiza una resincronización.
Si tras el transcoder aparecen errores PCR Accuracy, debe establecer un bitrate uniforme mediante stuffing para el flujo codificado por la ruta: «input — transcoder — Align Total Bitrate». La velocidad debe fijarse garantizadamente por encima del bitrate de vídeo y audio.
PCR drift¶
La métrica PCR drift mide la desviación sistemática de la frecuencia de reloj de la fuente con respecto al tiempo real y se expresa en ppm (parts-per-million). A diferencia del PCR jitter instantáneo, que capta la oscilación de marcas individuales, PCR drift caracteriza precisamente la deriva del cristal del codificador a largo plazo — una desviación estable que se acumula a lo largo de minutos y horas.
La medición se realiza mediante regresión lineal sobre pares (tiempo PCR acumulado en segundos, tiempo de recepción en segundos). El ruido de medición decrece como 1/T^1.5 con el crecimiento de la ventana, por lo que un veredicto fiable solo es posible en intervalos largos. La ventana se expande automáticamente hasta 300 segundos (ventana de aceptación del producto; la norma TR 101 290 no fija el intervalo de observación), tras lo cual se aplica un re-anclaje deslizante con un límite de 6 horas — esto elimina la pérdida de precisión por desbordamiento de la mantisa float64.
Las estadísticas XML del stream exportan:
pcr-drift-ppm— veredicto actual de la regresión;pcr-drift-window-s— longitud de la ventana sobre la que se calculó el veredicto;pcr-drift-samples— número de puntos en la regresión.
La tolerancia establecida por ISO/IEC 13818-1 §2.4.2.1 es de ±30 ppm. Ante una superación sostenida (véase la sección de alertas más abajo) se establece un atributo independiente pcr-drift-alert, y tras 300 segundos de violación continua — pcr-drift-alert-acceptance (nivel de aceptación; la ventana de 300 segundos es un valor de producto, en el espíritu de las mediciones a largo plazo de TR 101 290).
Aislar PCR drift en un atributo independiente (y no en el tr101290-alert común) es intencional: la deriva del cristal es un problema del codificador aguas arriba, no del receptor, y el operador debe verla por separado, sin mezclarla con los errores de integridad del transporte.
PCR accuracy¶
La métrica PCR accuracy (sección P2.3 de TR 101 290) mide la precisión de la inserción de marcas PCR en el flujo de transporte. Según la especificación, el valor de cada PCR debe coincidir con el momento efectivo de su paso por el multiplexor con un error no peor que ±500 ns.
La medición se realiza como señal residual (residual) de una regresión lineal en una ventana deslizante de 30 s. El tamaño de la ventana se elige para capturar todo el ciclo de repetición de PCR (≤40 ms según especificación) con amplio margen, manteniendo a la vez una respuesta rápida ante un deterioro de la calidad de inserción.
Las estadísticas XML del stream exportan pcr-accuracy-max-ns — el valor pico del residual en la ventana. Al superar ±500 ns se añade el token pcr-acc al atributo común tr101290-alert.
La medición solo tiene sentido para multiplex CBR: en VBR, los intervalos entre PCR pueden divergir de la tendencia lineal estimada sin violar el estándar. El analizador desactiva automáticamente el token pcr-acc para flujos clasificados como vbr (véase la sección sobre el detector de modo).
Compensador de deriva de PCR¶
Si el PCR drift de la fuente se encuentra dentro de la tolerancia de ISO/IEC 13818-1 pero aún es distinto de cero, el flujo de salida «se aleja» lentamente respecto al tiempo de red del receptor. En un reproductor con búfer pequeño esto se manifiesta como una pérdida acumulativa de sincronización o como saltos periódicos en la reproducción.
El compensador elimina la deriva sin resincronización dura: los paquetes salientes reciben un microdesplazamiento de ~11.1 µs (duración de un paquete TS de 188 bytes a 100 Mbps), y la decisión de «si es necesario el desplazamiento» se toma a partir de la diferencia efectiva entre el tiempo de red y el ritmo del PCR. El resync duro (Limit PCR gap) permanece como respaldo para las rupturas de flujo — el compensador opera a una escala más fina y preserva la continuidad.
Ajustes en stream:
Sync Drift Compensation — activa/desactiva el compensador. Activado por defecto.
Sync Drift Soft Window — ventana suave dentro de la cual las correcciones se aplican una a una (1–60000 ms, por defecto 500). El límite superior está acotado por
8 × Sync Disc Window, a partir del cual se considera que toca un resync duro.
Las estadísticas XML exportan slew-adjust-count — el contador de correcciones desde reset-stat. Un crecimiento brusco de este contador significa que la fuente o bien ha salido de su tolerancia o bien tiene un cristal inestable.
Analizador de búfer de vídeo T-STD¶
El modelo T-STD (Target Decoder) está descrito en ISO/IEC 13818-1 §2.4.2. Es el modelo de referencia del búfer del receptor: si se respeta, se garantiza que el flujo se reproduzca en cualquier decodificador hardware conforme.
El analizador modela el búfer MBn (multiplex buffer para vídeo) y verifica que:
el búfer no desborda (overflow → el codificador está obligado a descartar fotogramas);
el búfer no se vacía (underflow → el decodificador muestra una pausa o artefactos).
Se activa con el ajuste Analyze T-STD video (desactivado por defecto — añade carga de CPU en la ruta de procesamiento caliente).
Tipos de ES de vídeo admitidos (stream_type):
0x01/0x02— MPEG-2 video, capacidad 750 KB;0x10— MPEG-4 part 2, capacidad 750 KB;0x1B— H.264 / AVC, capacidad 3 MB;0x24/0x25— HEVC, capacidad 3.75 MB.
La velocidad de vaciado (drain rate) se ajusta de forma adaptativa a la tasa de bits real del vídeo: se utiliza una media móvil exponencialmente ponderada (EMA) con α=0.2 sobre una ventana de 5 s. Sin adaptación, el modelo produce rápidamente falsos underflows en cualquier vídeo VBR.
El búfer se vacía siguiendo los pulsos del PCR (90 kHz), no por el tiempo del sistema host — esto hace que el análisis sea robusto frente a pausas del SO y fluctuaciones de carga de CPU. El reloj real del host se usa únicamente para verificar el funcionamiento del compensador de deriva, nunca para T-STD.
Las estadísticas XML exportan:
tstd-video-cap— capacidad del modelo en bytes;tstd-video-drain-bps— velocidad de vaciado adaptada actual, bytes/s;tstd-video-overflows— contador de overflows desdereset-stat;tstd-video-underflows— contador de underflows;tstd-video-max-fill— ocupación pico en bytes.
Ante cualquier contador no nulo (overflows > 0 o underflows > 0) se añade el token tstd-video al tr101290-alert común. Al igual que pcr-acc, el token se aplica solo a flujos CBR — en un multiplex VBR los descensos transitorios del búfer son admisibles.
Detector de modo de tasa de bits del multiplexor¶
Una parte de las pruebas de TR 101 290 solo tiene sentido en modo CBR (tasa de bits del multiplex constante). Para no emitir falsas alertas en canales VBR, el analizador determina automáticamente el modo de la fuente y exporta el veredicto al atributo bitrate-mode-detected.
Algoritmo: comparación de las tasas de bits medias en dos ventanas — 5 s y 60 s. Si la divergencia supera el 20 %, el flujo se marca como vbr; si se mantiene dentro, cbr. Hasta que se acumule la estadística (~70 s desde el inicio o desde reset-stat), el veredicto es unknown y las pruebas reservadas a CBR (pcr-acc, tstd-video) quedan temporalmente suprimidas.
Valores del atributo:
cbr— tasa de bits constante, todas las pruebas activas;vbr— tasa de bits variable,pcr-accytstd-videoestán desactivados;unknown— datos insuficientes, las pruebas exclusivas de CBR están suspendidas.
Alertas TR 101 290¶
El atributo agregado tr101290-alert reúne varios detectores de conformidad con TR 101 290. Si en el momento actual se dispara al menos uno, el atributo contiene una lista de tokens separados por espacios; si no, el atributo está ausente del XML.
Tokens posibles y su significado:
pcr-int— intervalo entre PCR superado (sección 5.2.4 de TR 101 290, límite 40 ms, recomendación ≤25 ms);pcr-acc— precisión de inserción de PCR superada (sección 5.2.5, ±500 ns, CBR-only);pcr-disc— se detectó un resync duro por PCR (sección 5.2.4,PCR_discontinuity_indicator_error);pat-int— intervalo de PAT superado (sección 5.1.3, límite 500 ms, requiere Analyze PAT/PMT/KF);pmt-int— intervalo de PMT superado (sección 5.1.5, límite 500 ms, requiere Analyze PAT/PMT/KF);tstd-video— se detectó un overflow o underflow del modelo T-STD (sección 5.3.16, requiere Analyze T-STD video, CBR-only).
Para evitar el parpadeo del indicador ante ráfagas cortas se aplica una lógica de debounce: un token entra en tr101290-alert solo si se ha disparado durante al menos 30 de los últimos 60 segundos. Esto se aplica uniformemente a todos los tokens.
Adicionalmente se exporta tr101290-alert-acceptance — una copia del atributo en la que un token aparece solo tras 300 segundos de violación continua (nivel de aceptación; el intervalo es un valor del producto, el estándar TR 101 290 no lo normaliza). Es la métrica agregada «final» para la aceptación técnica del canal.
El indicador pcr-drift se aísla deliberadamente en su propio pcr-drift-alert (+ pcr-drift-alert-acceptance). La deriva del cristal es un problema del codificador aguas arriba, es independiente de la integridad del transporte y debe clasificarse por separado.
Asistente de IA para reclamaciones¶
Si en un canal se disparan alertas TR 101 290 o PCR drift, el operador puede obtener en una sola petición un prompt en inglés listo para un chat de IA que redacte una carta formal de reclamación al proveedor aguas arriba del flujo.
Endpoint: GET /data/stream/<id>/ai-complaint-prompt. Disponible con el rol Viewer (como todas las peticiones GET bajo /data/*). Devuelve text/plain; charset=utf-8. Para MPTS se devuelve 404 — las métricas T-STD / PCR drift solo son aplicables a SPTS.
El prompt es compatible con cualquier chat de IA moderno: «ChatGPT», «Claude», «DeepSeek», «Qwen», «Doubao». El tono de la carta es profesional, sin acusaciones; al final del prompt se añade la elección de idioma del documento resultante: inglés, ruso, chino simplificado o cualquier otro a elección del operador.
Contenido del prompt:
nombre y parámetros medidos del stream;
la lista de todos los tokens activos de TR 101 290 y PCR drift con la decodificación de la norma;
valores numéricos y umbrales;
el impacto de cada error en el lado del decodificador.
Lo que no se incluye en el prompt: el nombre del stream, el ID, el URI de la fuente. Estos campos se sustituyen por el marcador <Stream Designation> — el operador los rellena antes de enviar, para que no se filtren a un servicio de IA de terceros.