September 30
Media agent for HLS JS v2.0.1
Bug fixes
- Fixed
getSrc()returning the browser's temporaryblob:URL instead of the actual manifest URL once HLS playback started. The tracker now reads the URL from the underlying Hls.js instance, so the real manifest URL is reported consistently during playback.
September 24
Media agent for CAF v5.0.0
New features
/browsersubpath export: A@newrelic/video-caf/browserentry point is now available that excludes the unused connected-device pipeline from the bundled@newrelic/video-coredependency, keeping the bundle lean. Abrowser.jsfilesystem shim is also included for bundlers that don't honor theexportsfield.- Named export:
{ CAFTracker }is now available as a named export alongside the existing default export on both the root and/browserentry points.
Improvements
@newrelic/video-coreupdated to 5.1.0, which includes TypeScript declaration files, upstream bug fixes, and dependency patches.
September 24
Agente de medios para CAF v5.0.0
Nueva característica
- Exportación de subruta
/browser: Ahora está disponible un punto de entrada@newrelic/video-caf/browserque excluye el pipeline de dispositivos conectados no utilizado de la dependencia@newrelic/video-coreempaquetada, manteniendo el paquete ligero. También se incluye un shim de sistema de archivosbrowser.jspara los empaquetadores que no respetan el campoexports. - Exportación con nombre:
{ CAFTracker }ahora está disponible como exportación con nombre junto a la exportación predeterminada existente tanto en el punto de entrada raíz como en el de/browser.
Mejoras
@newrelic/video-coreactualizado a 5.1.0, que incluye archivos de declaración de TypeScript, correcciones de errores de origen y parches de dependencias.
September 22
Media agent for HLS JS v2.0.0
New features
/browsersubpath export: A@newrelic/video-hls/browserentry point is now available that excludes unused Vega/connected-device code, reducing bundle size for browser consumers. Abrowser.jsfilesystem shim is also included for bundlers that don't honor theexportsfield.- Named export:
{ HLSTracker }is now available as a named export alongside the existing default export on both the root and/browserentry points.
Improvements
@newrelic/video-coreupdated to 5.1.0, which includes TypeScript declaration files, upstream bug fixes, and dependency patches.
September 22
Agente de medios para HLS JS v2.0.0
Nueva característica
- Exportación de subruta
/browser: ahora está disponible un punto de entrada@newrelic/video-hls/browserque excluye el código no utilizado de Vega/dispositivos conectados, lo que reduce el tamaño del paquete para los consumidores de navegadores. También se incluye un shim de sistema de archivosbrowser.jspara los empaquetadores que no respetan el campoexports. - Exportación con nombre:
{ HLSTracker }ahora está disponible como exportación con nombre junto a la exportación predeterminada existente tanto en el punto de entrada raíz como en el de/browser.
Mejoras
@newrelic/video-coreactualizado a 5.1.0, que incluye archivos de declaración de TypeScript, correcciones de errores de origen y parches de dependencias.
September 17
Media agent for Video JS v5.0.0
- Breaking change: This release adds a
package.json#exportsmap. Deep imports into internal paths of this package will no longer resolve — only the root export (@newrelic/video-videojs-js) and the new/browsersubpath are valid import targets. Update any direct deep-imports before upgrading.
New features
/browsersubpath export: A@newrelic/video-videojs-js/browserentry point is now available that excludes unused Vega/connected-device code, reducing bundle size for browser consumers.notifyAdSkipped()(MediaTailor): Host apps with a custom skip-ad UI can report a user-initiated skip. Emits the skipped ad-end event when in an ad; no-op otherwise. Mirrors the equivalent API on the iOS/Android trackers.stopTracking()(MediaTailor): Reversible teardown that stops polling and unregisters listeners without disposing the tracker, so it can be resumed later. Shares the method name used by the iOS/Android trackers.AD_ERRORevents (MediaTailor): Non-terminal failures now surface asAD_ERRORevents in NRDB with a semanticerrorCode(NO_FILL,ADS_TIMEOUT,TRACKING_FETCH_FAILED,TOKEN_EXPIRED,MISSING_AVAIL_START,MANIFEST_TRACKING_MISMATCH) instead of only appearing in the debug log.adPrimaryIdattribute (MediaTailor):AD_START,AD_END, andAD_QUARTILEnow carryadPrimaryId(the VASTcreativeId, falling back toavailId:adId) socount(DISTINCT adPrimaryId)counts true creatives, not per-avail ad IDs.
Improvements
@newrelic/video-coreupdated to 5.1.0, which includes a TypeScript conversion, upstream bug fixes, and dependency patches.- Configurable poll cadence (MediaTailor):
config.ad.pollIntervalMsoverrides the manifest-derived live poll interval (clamped to 100–5000 ms) for battery- or CPU-constrained clients. Behavior is unchanged when the option is omitted. - Tracking URL from HLS manifest (MediaTailor): The tracker now reads the tracking endpoint from an
#EXT-X-DATERANGE CLASS="tracking"tag when present, removing the need to pass an explicittrackingUrlon non-AWS CDNs. An explicit option still takes precedence. - Source-change reset (MediaTailor): Swapping
player.src()now resets the tracker — cancels in-flight fetches, clears the stale ad schedule, and re-derives the tracking endpoint — instead of continuing to poll the previous session's endpoint.
Bug fixes
- MediaTailor: Only the first ad in a multi-ad pod was tracked. The paging loop re-fetched the same avail on every page; the tracker now fetches the full window in a single tokenless request.
- MediaTailor: The tracking endpoint could not be derived for implicit-session media-playlist URLs, so Tier-1 ad detection never ran for those sessions.
- MediaTailor:
config.ad.segmentPrefixwas silently ignored because it was mapped to the wrong internal key. - MediaTailor: A DASH period was classified as an ad when only one of several representations resolved to an ad-marked URL. Classification now requires every representation to match.
- MediaTailor:
AD_ENDwas not fired when a pod ended before its enclosing break boundary, causing completions to be undercounted. - MediaTailor: Pod-count mismatches between manifest and tracking data silently corrupted break geometry; the tracker now reconciles counts explicitly and emits
MANIFEST_TRACKING_MISMATCH. - MediaTailor: Avails with a missing
startTimeInSecondswere silently dropped, undercounting impressions in NRDB; the tracker now falls back to the first ad's start and emitsMISSING_AVAIL_START. - MediaTailor: Live sliding-window re-merges duplicated or dropped ad breaks when start times jittered; breaks now deduplicate by stable identity (
availId+availProgramDateTime). - MediaTailor: No-fill avails emitted phantom
AD_START/quartile events; they now emit only break boundaries plusAD_ERROR(NO_FILL). - MediaTailor: Expired tracking pagination tokens (
HTTP 400) were not handled; the token is now dropped and retried once before emittingTOKEN_EXPIREDand stopping polling. - MediaTailor: Manifest fetches did not re-check
isDisposedafter eachawait, risking state mutation on a disposed tracker. AD_RESUMEwas fired on first play into an ad, not only after a genuine pause.- Disposing mid-ad did not emit the outstanding
AD_END/AD_BREAK_END, leaving the break dangling. - DASH EventStream
presentationTimevalues were treated as raw ticks instead of being converted to seconds, misplacing ads at wrong offsets. - HLS
#EXT-X-CUE-OUT-parsed ad breaks did not initialize quartile flags, causing quartile events to fire more than once per ad.
September 17
Agente de medios para Video JS v5.0.0
- 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.
August 11
Media agent for Video JS v4.2.1
New features
- Added optional automatic rendition/quality-level change tracking: integrates with the
videojs-contrib-quality-levelsplugin (when present) to report quality transitions along with the previous and new bitrates, with a graceful fallback when the plugin isn't loaded.
August 6
Media agent for Dash JS v5.0.1
Bug fixes
- Updated the bundled
@newrelic/video-coredependency to v5.0.1, adding Japan(JP) region collector support for Vega/Fire TV tracking.
August 6
Media agent for HTML5 v5.0.1
Bug fixes
- Updated the bundled
@newrelic/video-coredependency to v5.0.1, adding Japan (JP) region collector support for Vega/Fire TV tracking.