mirror of
https://github.com/R0m1k3/xtremflow.git
synced 2026-10-20 21:48:06 +02:00
Lecture : un échec de chargement de mpegts.js n'est plus fatal
L'écran « Échec du chargement : vendor/mpegts.min.js » était un cul-de-sac : la moindre requête ratée sur la lib condamnait la chaîne, alors que le flux restait parfaitement lisible autrement. - xf-player-core : le chargement des libs est retenté une fois en contournant le cache HTTP (les libs sont servies en max-age=86400, une entrée tronquée bloquait le lecteur jusqu'au vidage manuel du cache), et seul un succès est mémorisé — la promesse rejetée restait en cache et rendait tout réessai impossible pour le reste de la session. - Repli automatique : si mpegts.js reste introuvable, le live bascule sur la route HLS équivalente (où FFmpeg réencode déjà l'audio en AAC) ; si hls.js reste introuvable, on tente le HLS natif. Plus d'écran d'erreur quand un chemin de lecture est encore disponible. - Message d'erreur exploitable : la cause réelle est affichée (HTTP 404, 429, réseau injoignable) au lieu d'un échec indifférencié. - Préchargement corrigé : les trois players préchargeaient hls.js en dur, soit 618 Ko téléchargés pour rien à chaque zap TV — c'est mpegts.js qui sert au direct — au détriment du flux et du chargement de mpegts.js lui-même. Le préchargement suit désormais le flux demandé, avec la même décision que XFPlayer.start() (et ne charge rien sur Safari/iOS). - Serveur : avertissement explicite au démarrage si web/vendor/*.min.js manque, au lieu de laisser le navigateur échouer sans explication. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FSovdudi3KBwZK3aC42fw
This commit is contained in:
6 files changed
+183
-9
No files matched your search
+29
-1
@@ -11,7 +11,35 @@
|
||||
et environ 200 Ko de JS jamais téléchargés dans le cas courant.
|
||||
-->
|
||||
<link rel="stylesheet" href="xf-player.css">
|
||||
<link rel="preload" href="vendor/hls.min.js" as="script">
|
||||
<script>
|
||||
// Précharge la SEULE lib utile à CE flux, dès le parse du <head>.
|
||||
// Un préchargement fixe de hls.js faisait télécharger 618 Ko inutiles
|
||||
// à chaque zap TV — la lib réellement nécessaire au direct est
|
||||
// mpegts.js — et cette bande passante était prise sur le flux
|
||||
// lui-même et sur mpegts.js, jusqu'à faire échouer son chargement sur
|
||||
// les liens contraints. Même décision que XFPlayer.start().
|
||||
(function () {
|
||||
var p = new URLSearchParams(location.search);
|
||||
var url = (p.get('url') || '').toLowerCase();
|
||||
var isHls = url.indexOf('.m3u8') !== -1;
|
||||
var nativeHls =
|
||||
document.createElement('video')
|
||||
.canPlayType('application/vnd.apple.mpegurl') !== '';
|
||||
var lib = null;
|
||||
if (isHls) {
|
||||
// Safari/iOS lit le HLS nativement : aucune lib à charger.
|
||||
if (!nativeHls) lib = 'hls.min.js';
|
||||
} else if (p.get('type') === 'live' || url.indexOf('.ts') !== -1) {
|
||||
lib = 'mpegts.min.js';
|
||||
}
|
||||
if (!lib) return;
|
||||
var l = document.createElement('link');
|
||||
l.rel = 'preload';
|
||||
l.as = 'script';
|
||||
l.href = 'vendor/' + lib;
|
||||
document.head.appendChild(l);
|
||||
})();
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
Reference in new issue
Block a user