Architecture¶
Core TypeScript pur¶
@ngxsp/core porte les contrats stables :
PlayerConfigPlayerSourcePlayerFacade- ports HTTP, stockage, télémétrie et logs
- interfaces de plugins
- erreurs et diagnostics
- moteur natif
Cette couche doit rester portable. Une application Angular, React ou vanilla doit pouvoir consommer le même runtime.
PlayerFacade¶
PlayerFacade est la frontière impérative et observable. Elle attache un HTMLVideoElement, sélectionne un moteur, charge une source, expose les commandes de lecture et publie l'état.
Elle découple les UI des moteurs. Une UI ne devrait pas appeler directement Shaka ou l'élément média pour les opérations qui appartiennent au contrat public.
Engines¶
Le runtime garde le moteur natif comme solution de repli et ajoute des factories de moteurs pour les besoins avancés.
| Moteur | Usage | Notes |
|---|---|---|
| Natif | Fichiers directs, solution de repli navigateur. | Simple, léger, peu de surface DRM/ABR. |
| Shaka | HLS, DASH, DRM, ABR, pistes avancées. | Package optionnel à installer explicitement. |
Ports et fournisseurs¶
Les ports isolent le runtime de l'hôte :
- HTTP pour config distante et fournisseurs.
- Stockage pour progression, cache local et hors-ligne.
- Télémétrie pour mesures QoE, erreurs et événements.
- Log pour diagnostics.
Les fournisseurs de métadonnées, sous-titres, publicités et hors-ligne utilisent ces ports au lieu de coupler le core à des services externes.
Focus Angular¶
@ngxsplayer/ngx-smart-player fournit un composant standalone et un shell UI. Il est utile pour accélérer une app Angular, mais la documentation de référence reste centrée sur @ngxsp/*.