diff --git a/apps/web/app.js b/apps/web/app.js index ac2e288..5842106 100644 --- a/apps/web/app.js +++ b/apps/web/app.js @@ -162,6 +162,7 @@ function mountPlayer(relayUrl, name) { watch.setAttribute("name", name); watch.setAttribute("path", name); watch.setAttribute("volume", "1"); + watch.setAttribute("muted", ""); // Force WebTransport in-browser; websocket fallback has shown degraded // media behavior (especially audio) against public relay paths. @@ -199,22 +200,8 @@ function mountPlayer(relayUrl, name) { }; document.addEventListener("pointerdown", unlockAudio, { once: true }); video.addEventListener("pointerdown", unlockAudio, { once: true }); + setHint(`Live: subscribed to ${name} (tap video to unmute)`, "warn"); void video.play().catch(() => {}); - - // If video-element rendering stalls, fall back to canvas rendering. - window.setTimeout(() => { - const stalled = video.readyState < 2 || (video.currentTime === 0 && !video.paused); - if (!stalled) return; - const canvas = document.createElement("canvas"); - canvas.className = "canvas"; - try { - video.remove(); - watch.appendChild(canvas); - setHint(`Live: subscribed to ${name} (canvas fallback)`, "warn"); - } catch (_) { - // Ignore fallback errors. - } - }, 9000); bindPlayerSignals(watch, name); } diff --git a/evolution/proposals/ECP-0078-live-video-tag-first-with-audio-unlock.md b/evolution/proposals/ECP-0078-live-video-tag-first-with-audio-unlock.md index e64ec91..07a6898 100644 --- a/evolution/proposals/ECP-0078-live-video-tag-first-with-audio-unlock.md +++ b/evolution/proposals/ECP-0078-live-video-tag-first-with-audio-unlock.md @@ -9,18 +9,16 @@ Live browser playback currently prioritizes canvas rendering. Audio can fail on In the web watcher mount path: 1. Render live playback with a `