REPRODUCCIÓN / PLAYER

Player web

El Player abre un paquete .p2lrn, verifica su integridad, selecciona una presentación compatible y conecta la reproducción con la plataforma que lo contiene.

Instalación

La instalación se documenta fuera de esta referencia. Elige la guía que corresponda a tu aplicación y vuelve aquí para configurar el Player.

Componente web

src

URL del paquete que debe abrirse.

node

Entidad inicial opcional.

renderer

Presentación solicitada explícitamente cuando necesitas fijar una concreta.

runtime-base-url

Override opcional para utilizar un runtime administrado en otro origen. SCORM y H5P crean automáticamente un sandbox aislado cuando no se proporciona uno.

player.adapter

Conexión con Host Adapter versión 1.

await player.reload()

Vuelve a abrir el paquete y actualiza la reproducción.

API pública

P2LRN.mount(target, options)

Monta el Player. options puede incluir Host Adapter, Capability Broker y cache de paquetes.

P2LRN.openPackageURL(url, options)

Abre un paquete remoto, usa HTTP Range cuando está disponible y puede reutilizar un cache verificado.

P2LRN.openPackageBytes(buffer, limits)

Abre bytes ya disponibles en memoria.

P2LRN.renderers() · components() · dependencies()

Inspeccionan los registros del runtime.

P2LRN.installServiceWorker(options)

Instala el bridge de recursos estáticos cuando el host necesita URLs navegables para contenido ya verificado.

Servicios conectados

createCapabilityBroker()

Negocia capacidades semánticas declaradas por el curso y autoriza cada operación con política deny-by-default.

createToolCapabilityProvider() · createMcpCapabilityProvider()

Mapean operaciones semánticas a herramientas de confianza configuradas por el host; endpoints y credenciales no entran en el paquete.

createHttpCollaborationProvider()

Conecta collaboration.room con un endpoint autenticado del host.

createMemoryResourceLibrary() · createCacheStorageResourceLibrary()

Biblioteca verificada por SHA-256 para recursos reutilizables; puede conectarse a createResourceLibraryResolver().

Offline y analítica

createOfflineHostAdapter()

Envuelve Host Adapter v1 con estado local y outbox ordenado. createOfflineSyncController() añade sincronización opt-in al volver la conexión.

createCacheStoragePackageCache()

Guarda bytes completos de cursos sólo después de verificarlos. cachePackageURL() y player.loadCachedPackage() permiten reabrirlos sin red.

createActivityTracker()

Mide tiempo activo/idle de forma opt-in y limitado al contexto del Player.

createLearningEventStream() · observeLearningEvents()

Proyectan los eventos runtime a un modelo ordenado de learning events con sesión/intento y categorías semánticas.

Integridad y transporte

El Player valida el manifiesto, el grafo y los recursos que consume. Cuando un servidor admite HTTP Range, puede verificar primero la estructura del paquete y cargar recursos concretos bajo demanda.

Límites por defecto

Buffer completo: 256 MiB. Paquete remoto: hasta 64 GiB. Entradas: 5000. Son límites de protección del Player, no una recomendación de tamaño de curso.

Eventos

Escucha los eventos del Player cuando tu aplicación necesite reaccionar a carga, puntuación, estado, finalización o errores.

JavaScript
const player = document.querySelector('p2lrn-player');

for (const type of ['p2lrn:ready','p2lrn:activityready','p2lrn:answer','p2lrn:progress','p2lrn:score','p2lrn:statechange','p2lrn:complete','p2lrn:progressionchange','p2lrn:xapi','p2lrn:error']) {
  player.addEventListener(type, (event) => console.log(type, event.detail));
}

Consulta Eventos para el contrato de event.detail y Métricas y analítica para saber qué guardar y cómo obtener notas, respuestas, CMI SCORM, xAPI H5P y progreso del curso.

Host Adapter

Host Adapter permite cargar y guardar estado, informar de puntuación, enviar eventos y resolver recursos protegidos. Una URL entregada mediante resolveResourceUrl debe indicar verified:true para que el Player la acepte.

Ver la guía de integración →

SCORM y H5P dentro del paquete

Cuando el .p2lrn contiene un SCORM o H5P, el Player mantiene ese contenido dentro del paquete y prepara su ejecución en memoria. Si no existe un runtime externo aislado, crea automáticamente un iframe sandbox de origen opaco.

SCORM

Los archivos del SCO se transfieren al sandbox y la API SCORM se comunica con el Player mediante mensajes.

H5P

El H5P y sus dependencias se transfieren al sandbox. Si faltan librerías compartidas, el Player las resuelve desde el catálogo que acompaña a la distribución.

Runtime externo

Es opcional para SCORM y H5P. Utiliza runtime-base-url sólo cuando la integración quiera administrar ese entorno por separado.

Contenido compatible

El Player incluye presentaciones para contenido web y texto, multimedia, cuestionarios, juegos 2D y 3D, componentes, grupos compuestos y paquetes educativos compatibles con los entornos de ejecución disponibles.

Juegos 3D

Las actividades 3D utilizan Three.js para la escena y Rapier para las físicas. Las mecánicas de ordenar, relacionar y clasificar forman parte de P2LRN. Ver juegos 3D →

Service Worker y cache verificado

El Service Worker sirve recursos pertenecientes a paquetes que el Player ya verificó. No es necesario para todos los cursos.

El cache de paquete y el estado del alumno son almacenes independientes: createCacheStoragePackageCache() conserva bytes del curso; createOfflineHostAdapter() conserva snapshots/outbox del usuario. Ninguno escribe historial de aprendizaje dentro del .p2lrn.

JavaScript · cache explícito
const cache = P2LRN.createCacheStoragePackageCache();
const saved = await P2LRN.cachePackageURL('/courses/algebra.p2lrn', {store: cache});
player.packageCache = cache;
await player.loadCachedPackage(saved.contentRoot);

Probar un paquete

El visor permite abrir un curso con el Player y revisar la información de carga y los eventos generados durante la reproducción.