Librería multimedia agnóstica universal y ligera
_inspectMagicBytes usando lectura asíncrona mediante arrayBuffer() para garantizar que la promesa siempre resuelva sin bloquearse.load() consecutivamente, las operaciones anteriores se cancelan automáticamente invalidando su identificador de carga (_loadId).QPlayError y emisión de eventos 'error' detallados en lugar de excepciones silenciosas.on() / off(): Soporte nativo para suscribirse a eventos del ciclo de vida (trackchange, play, pause, ended, error).hls.js y dash.js con caché global (QPlay._scripts) que evita inyecciones duplicadas en el DOM.shuffle mejorado para no repetir pistas hasta agotar la lista y soporte de historial previo para la función previous().destroy() aborta peticiones de red activas, cancela listeners con AbortController y remueve exclusivamente los elementos creados por la librería sin alterar hijos ajenos del contenedor.QPlay.js opera mediante los siguientes pilares de arquitectura:
Determina la categoría multimedia adecuada analizándolo paso a paso:
arrayBuffer() (Magic Bytes) identificando la firma binaria real del archivo (PNG, JPEG, GIF, WebP, MP3, WAV, WebM, MP4, AVIF, HEIC, etc.).QPLAY_EXT_MIME) evitando peticiones de red innecesarias. Si es ambigua, realiza una solicitud HEAD con un timeout configurable (sniffTimeout).Suscripción simple utilizando player.on(evento, callback). Ejemplos de uso:
const player = new QPlay('#player-container');
player.on('trackchange', (e) => console.log('Nueva pista:', e.item));
player.on('error', (e) => console.error('Error detectado:', e.code, e.message));
player.on('ended', () => console.log('Reproducción finalizada'));
loadPlaylist(), playIndex(), next() y previous().toggleShuffle() y tres niveles de bucle con setRepeatMode('off' | 'one' | 'all').forward(segundos) y rewind(segundos) para adelantar o retrasar el tiempo relativo.Este codigo no esta completo pero cuando descargues la libreria tendras todo el codigo:
/**
* QPlay.js v2.2.0 - Librería Multimedia Agnóstica Universal
* Soporta imágenes, audio, video, streams (HLS/DASH), listas de reproducción,
* reproducción aleatoria (Shuffle), bucles (Repeat) y navegación.
*
* Cambios respecto a 1.1.0 (la API pública sigue siendo compatible):
* - _inspectMagicBytes ya resuelve su promesa (antes se colgaba).
* - Condiciones de carrera en load(): una carga nueva cancela a la anterior.
* - Errores reportados: excepciones QPlayError y evento 'error'.
* - Sistema de eventos on()/off().
* - hls.js y dash.js con versión fija y configurable; sin duplicar