tinyhumansai/openhuman · error
[meet-video-producer] silent audio play() failed
Error message
[meet-video-producer] silent audio play() failed
What it means
Playing the muted looping silent-WAV keep-alive audio element failed at producer mount. The element exists to keep the webview's audio pipeline warm (a Chromium autoplay/audio-graph workaround for the meet session); its play() rejected — typically because autoplay policy blocked it before any user gesture, or the element was detached mid-play. Impact is limited to potential first-sound latency/under-run, not correctness of video frames.
Source
Thrown at app/src/features/meet/MascotFrameProducer.tsx:335
}
}, [session.requestId]);
useEffect(() => {
stoppedRef.current = false;
const SILENT_WAV =
'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEAQB8AAEAfAAABAAgAAABmYWN0BAAAAAAAAABkYXRhAAAAAA==';
const keepAliveAudio = document.createElement('audio');
keepAliveAudio.muted = true;
keepAliveAudio.loop = true;
keepAliveAudio.autoplay = true;
keepAliveAudio.preload = 'auto';
keepAliveAudio.src = SILENT_WAV;
keepAliveAudio.style.display = 'none';
document.body.appendChild(keepAliveAudio);
void keepAliveAudio
.play()
.catch(err => console.warn('[meet-video-producer] silent audio play() failed', err));
const url = `ws://127.0.0.1:${session.port}`;
let ws: WebSocket;
try {
ws = new WebSocket(url);
} catch (err) {
console.warn('[meet-video-producer] ws ctor failed', err);
return;
}
ws.binaryType = 'arraybuffer';
wsRef.current = ws;
ws.onopen = () => {
wsReadyRef.current = true;
console.log('[meet-video-producer] ws connected', url);
};
ws.onclose = () => {
wsReadyRef.current = false;
console.log('[meet-video-producer] ws closed');View on GitHub (pinned to 7491200858)
Solutions
- If audio in the meet session also fails, trigger any user gesture in the window and check whether audio then works (autoplay policy)
- Check the warned err name — NotAllowedError confirms autoplay blocking; AbortError usually means the element was reset mid-play
- No action needed if meet audio works — the keep-alive is best-effort
- If persistent, restart the meet session after a user interaction with the window
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at app/src/features/meet/MascotFrameProducer.tsx:335 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/2878f792fcb00c55.
Report an issue: GitHub.