From 3ff5c26fc16c872968066f64e2ba992be58d8f72 Mon Sep 17 00:00:00 2001 From: "every.channel" Date: Tue, 24 Feb 2026 22:15:03 -0800 Subject: [PATCH] web: auto-recover hls.js archive network/media errors --- apps/web/app.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/apps/web/app.js b/apps/web/app.js index 19f35d9..bb1828d 100644 --- a/apps/web/app.js +++ b/apps/web/app.js @@ -270,9 +270,26 @@ async function mountArchivePlayer(name) { }); activeHlsPlayer = hls; hls.on(HlsCtor.Events.ERROR, (_event, data) => { - if (data?.fatal) { - setHint(`Archive playback error: ${data.type || "fatal"}`, "warn"); + if (!data?.fatal) return; + if (data.type === HlsCtor.ErrorTypes.NETWORK_ERROR) { + setHint("Archive network hiccup, retrying…", "warn"); + try { + hls.startLoad(); + } catch (_) { + // best-effort recovery + } + return; } + if (data.type === HlsCtor.ErrorTypes.MEDIA_ERROR) { + setHint("Archive media hiccup, recovering…", "warn"); + try { + hls.recoverMediaError(); + } catch (_) { + // best-effort recovery + } + return; + } + setHint(`Archive playback error: ${data.type || "fatal"}`, "warn"); }); hls.loadSource(archiveUrl); hls.attachMedia(video);