web: keep moq-watch muted until user gesture

This commit is contained in:
every.channel 2026-02-24 23:24:47 -08:00
parent ad81b9791a
commit 5a28a24294
No known key found for this signature in database
2 changed files with 4 additions and 19 deletions

View file

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