mirror of
https://github.com/R0m1k3/xtremflow.git
synced 2026-10-24 07:28:05 +02:00
Lecture vidéo : son garanti sur toutes les chaînes, zapping et démarrages accélérés
Son manquant sur certaines chaînes : - Nouvelle route GET /api/live/<id>/turbo.ts pour le player web : vidéo copiée (-c:v copy), audio TOUJOURS réencodé en AAC. mpegts.js ne démuxe que l'AAC/MP3 : les chaînes en AC-3/E-AC-3/MP2 passaient par le proxy brut → image sans son, et le fallback HLS côté client ne couvrait pas les codecs démuxés mais non décodables par le navigateur (MP2) - getLiveStreamUrlTs pointe sur la route turbo ; le proxy brut /api/live/<id>.ts reste inchangé pour le scheduler d'enregistrement - FFmpeg turbo tué dès que le client zappe (onCancel) ; stderr redacté - Le fallback client (_hlsEquivalent) reconnaît le nouveau format d'URL et reste en filet de sécurité Temps de chargement : - Players vendorisés mis à jour : hls.js 1.6.7 → 1.7.1, mpegts.js 1.7.3 → 1.8.2 - Live HLS et turbo : -fflags nobuffer + probesize/analyzeduration 1 Mo (sans borne, FFmpeg pouvait sonder plusieurs secondes avant le premier segment) - VOD : probesize 10 Mo → 5 Mo, analyzeduration 5 s → 2 s - Live 'high' : preset medium → veryfast (zerolatency déjà actif) ; lecture d'enregistrement : medium/crf18 → veryfast/crf20 (medium ne tenait pas le temps réel en 1080p sur CPU modeste) - waitForPlaylist : polling 500 ms → 100 ms - Suppression du cache-buster &v=timestamp qui re-téléchargeait player.html à chaque zap ; les .html sont servis en no-cache côté serveur pour garder la fraîcheur après déploiement - mpegts.js : liveBufferLatencyChasing activé en profil « fast » — les micro-coupures ne font plus dériver la lecture derrière le direct Validé : dart analyze (0 issue) + dart test (48/48) sur bin/, syntaxe JS vérifiée. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015oEu9QayWsw7hCKhenxgVa
This commit is contained in:
9 files changed
+136
-27
No files matched your search
+13
-5
@@ -281,7 +281,13 @@
|
||||
// 64 Ko en profil « fast » contre 512 Ko auparavant.
|
||||
stashInitialSize: this.profile.mpegtsStash,
|
||||
maxStashSize: 30 * 1024 * 1024,
|
||||
liveBufferLatencyChasing: false,
|
||||
// Rattrapage du direct : sans lui, chaque micro-coupure fait dériver
|
||||
// la lecture derrière le direct (latence qui s'accumule). Activé
|
||||
// uniquement en profil « fast » — les profils élargis privilégient
|
||||
// la stabilité du buffer.
|
||||
liveBufferLatencyChasing: isLive && this.profile.name === 'fast',
|
||||
liveBufferLatencyMaxLatency: 5,
|
||||
liveBufferLatencyMinRemain: 1,
|
||||
lazyLoad: false
|
||||
}
|
||||
);
|
||||
@@ -338,13 +344,15 @@
|
||||
this._attemptPlay();
|
||||
};
|
||||
|
||||
/// `/api/live/<id>.ts` → `/api/live/<id>/source/playlist.m3u8`.
|
||||
/// `/api/live/<id>/turbo.ts` (ou l'ancien `/api/live/<id>.ts`)
|
||||
/// → `/api/live/<id>/source/playlist.m3u8`.
|
||||
///
|
||||
/// Le préréglage `source` garde la vidéo en copie de flux (`-c:v copy`) :
|
||||
/// seul l'audio est réencodé, le coût processeur reste négligeable.
|
||||
/// Filet de sécurité : la route turbo réencode déjà l'audio en AAC côté
|
||||
/// serveur, donc ce fallback ne devrait plus jamais se déclencher — il
|
||||
/// reste pour couvrir un flux sans piste audio exploitable du tout.
|
||||
/// Renvoie `null` si l'URL n'est pas un flux live direct — rien à tenter.
|
||||
XFPlayer.prototype._hlsEquivalent = function (url) {
|
||||
var match = /^(.*\/api\/live\/)([^/?#]+)\.ts(\?.*)?$/.exec(url);
|
||||
var match = /^(.*\/api\/live\/)([^/?#]+)(?:\/turbo)?\.ts(\?.*)?$/.exec(url);
|
||||
if (!match) return null;
|
||||
return match[1] + match[2] + '/source/playlist.m3u8';
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user