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);