better stream support

This commit is contained in:
Radek Davidek 2026-03-10 16:23:33 +01:00
parent acde8364fa
commit 691e428240

View File

@ -257,7 +257,15 @@
function bindPlayerEvents() {
el.player.addEventListener("error", () => {
setSettingsMessage("Playback failed in embedded player. Try Open stream directly.", "err");
const systemPlayerUrl = state.currentStreamInfo ? buildSystemPlayerHref(state.currentStreamInfo?.title, state.currentStreamInfo?.url, state.currentStreamInfo) : "";
if (systemPlayerUrl) {
setSettingsMessageHtml(
`Playback failed in embedded player. <a href="${systemPlayerUrl}" target="_blank" style="color: inherit; text-decoration: underline;">Open stream directly</a>`,
"err"
);
} else {
setSettingsMessage("Playback failed in embedded player. Try Open stream directly.", "err");
}
});
el.player.addEventListener("loadedmetadata", updateStreamRuntimeInfo);
el.player.addEventListener("loadedmetadata", refreshEmbeddedSubtitleTracks);
@ -2488,7 +2496,11 @@
return;
}
disposeHls();
setSettingsMessage("HLS playback failed in embedded player. Try Open stream directly.", "err");
const systemPlayerUrl = buildSystemPlayerHref(state.currentStreamInfo?.title, state.currentStreamInfo?.url, state.currentStreamInfo);
setSettingsMessageHtml(
`HLS playback failed in embedded player. <a href="${systemPlayerUrl}" target="_blank" style="color: inherit; text-decoration: underline;">Open stream directly</a>`,
"err"
);
if (state.currentStreamInfo) {
state.currentStreamInfo.playbackEngine = "native (HLS fallback failed)";
renderStreamInfo();
@ -2504,8 +2516,9 @@
if (error?.name === "NotAllowedError") {
return;
}
setSettingsMessage(
`Playback could not start in embedded player: ${error?.message || "unknown error"}`,
const systemPlayerUrl = buildSystemPlayerHref(state.currentStreamInfo?.title, state.currentStreamInfo?.url, state.currentStreamInfo);
setSettingsMessageHtml(
`Playback failed in embedded player. <a href="${systemPlayerUrl}" target="_blank" style="color: inherit; text-decoration: underline;">Open in system player</a>`,
"err"
);
});
@ -3158,6 +3171,11 @@
el.settingsMessage.className = `message ${type}`.trim();
}
function setSettingsMessageHtml(html, type = "") {
el.settingsMessage.innerHTML = html || "";
el.settingsMessage.className = `message ${type}`.trim();
}
function showError(error) {
setSettingsMessage(error.message || String(error), "err");
}