web: auto-recover hls.js archive network/media errors

This commit is contained in:
every.channel 2026-02-24 22:15:03 -08:00
parent 1b300d2e1e
commit 3ff5c26fc1
No known key found for this signature in database

View file

@ -270,9 +270,26 @@ async function mountArchivePlayer(name) {
}); });
activeHlsPlayer = hls; activeHlsPlayer = hls;
hls.on(HlsCtor.Events.ERROR, (_event, data) => { hls.on(HlsCtor.Events.ERROR, (_event, data) => {
if (data?.fatal) { if (!data?.fatal) return;
setHint(`Archive playback error: ${data.type || "fatal"}`, "warn"); 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.loadSource(archiveUrl);
hls.attachMedia(video); hls.attachMedia(video);