- Cambio importante: esta versión agrega un mapa
package.json#exports. Las importaciones profundas a rutas internas de este paquete ya no se resolverán —solo la exportación raíz (@newrelic/video-videojs-js) y la nueva subruta/browserson objetivos de importación válidos. Actualice cualquier importación profunda directa antes de actualizar.
Nueva característica
- Exportación de subruta de
/browser: ahora hay disponible un punto de entrada de@newrelic/video-videojs-js/browserque excluye el código de Vega/dispositivo conectado no utilizado, lo que reduce el tamaño del paquete para los consumidores de navegadores. notifyAdSkipped()(MediaTailor): las aplicaciones host con una UI personalizada para omitir anuncios pueden informar una omisión iniciada por el usuario. Emite el evento de fin de anuncio omitido cuando está en un anuncio; de lo contrario, no realiza ninguna operación. Refleja la API equivalente en los rastreadores de iOS/Android.stopTracking()(MediaTailor): desmontaje reversible que detiene el sondeo y anula el registro de los agentes de escucha sin eliminar el rastreador, de modo que se puede reanudar más adelante. Comparte el nombre del método utilizado por los rastreadores de iOS/Android.- Eventos
AD_ERROR(MediaTailor): las fallas no terminales ahora aparecen como eventosAD_ERRORen NRDB con unerrorCodesemántico (NO_FILL,ADS_TIMEOUT,TRACKING_FETCH_FAILED,TOKEN_EXPIRED,MISSING_AVAIL_START,MANIFEST_TRACKING_MISMATCH) en lugar de aparecer solo en el log de depuración. - Atributo
adPrimaryId(MediaTailor):AD_START,AD_ENDyAD_QUARTILEahora llevanadPrimaryId(elcreativeIdde VAST, recurriendo aavailId:adId) para quecount(DISTINCT adPrimaryId)cuente las creatividades verdaderas, no los ID de anuncios por disponibilidad.
Mejoras
@newrelic/video-coreactualizado a 5.1.0, que incluye una conversión a TypeScript, correcciones de errores ascendentes y parches de dependencias.- Cadencia de sondeo configurable (MediaTailor):
config.ad.pollIntervalMsanula el intervalo de sondeo en vivo derivado del manifiesto (limitado a 100-5000 ms) para clientes con limitaciones de batería o CPU. El comportamiento no cambia cuando se omite la opción. - URL de seguimiento del manifiesto de HLS (MediaTailor): el rastreador ahora lee el extremo de seguimiento de una etiqueta
#EXT-X-DATERANGE CLASS="tracking"cuando está presente, lo que elimina la necesidad de pasar untrackingUrlexplícito en las CDN que no son de AWS. Una opción explícita aún tiene prioridad. - Restablecimiento de cambio de origen (MediaTailor): el intercambio de
player.src()ahora restablece el rastreador —cancela las recuperaciones en curso, borra la programación de anuncios obsoleta y vuelve a derivar el extremo de seguimiento— en lugar de continuar sondeando el extremo de la sesión anterior.
Corrección de errores
- MediaTailor: solo se rastreó el primer anuncio en un pod de varios anuncios. El bucle de paginación volvía a recuperar la misma disponibilidad en cada página; el rastreador ahora recupera la ventana completa en una sola solicitud sin token.
- MediaTailor: el extremo de seguimiento no se pudo derivar para las URL de listas de reproducción de medios de sesión implícita, por lo que la detección de anuncios de nivel 1 nunca se ejecutó para esas sesiones.
- MediaTailor:
config.ad.segmentPrefixse ignoró silenciosamente porque estaba asignado a la clave interna incorrecta. - MediaTailor: un período de DASH se clasificó como un anuncio cuando solo una de varias representaciones se resolvió en una URL marcada como anuncio. La clasificación ahora requiere que todas las representaciones coincidan.
- MediaTailor:
AD_ENDno se activó cuando un pod finalizó antes del límite de la pausa que lo contiene, lo que provocó que las finalizaciones se contaran de menos. - MediaTailor: las discrepancias en el recuento de pods entre el manifiesto y los datos de seguimiento corrompieron silenciosamente la geometría de la pausa; el rastreador ahora concilia los recuentos explícitamente y emite
MANIFEST_TRACKING_MISMATCH. - MediaTailor: las disponibilidades a las que les faltaba un
startTimeInSecondsse descartaron silenciosamente, lo que subestimó las impresiones en NRDB; el rastreador ahora recurre al inicio del primer anuncio y emiteMISSING_AVAIL_START. - MediaTailor: la ventana deslizante en vivo vuelve a fusionar las pausas publicitarias duplicadas o descartadas cuando las horas de inicio fluctuaban; las pausas ahora se deduplican mediante una identidad estable (
availId+availProgramDateTime). - MediaTailor: las disponibilidades sin relleno emitían eventos fantasma de
AD_START/cuartil; ahora emiten solo límites de pausa másAD_ERROR(NO_FILL). - MediaTailor: los tokens de paginación de seguimiento caducados (
HTTP 400) no se manejaron; el token ahora se descarta y se vuelve a intentar una vez antes de emitirTOKEN_EXPIREDy detener el sondeo. - MediaTailor: las recuperaciones de manifiestos no volvieron a verificar
isDisposeddespués de cadaawait, lo que corría el riesgo de mutación de estado en un rastreador desechado. AD_RESUMEse activó en la primera reproducción de un anuncio, no solo después de una pausa genuina.- La eliminación a mitad del anuncio no emitió el
AD_END/AD_BREAK_ENDpendiente, lo que dejó la pausa colgando. - Los valores de
presentationTimede EventStream de DASH se trataron como tics sin procesar en lugar de convertirse a segundos, lo que colocó los anuncios en desplazamientos incorrectos. - Las pausas publicitarias analizadas por
#EXT-X-CUE-OUTde HLS no inicializaron los indicadores de cuartiles, lo que provocó que los eventos de cuartiles se activaran más de una vez por anuncio.