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