The MANIFEST_PARSED listener was registered after loadSource/attachMedia, so cached manifests could fire the event before the listener was set — meaning tryAutoplay never ran. Fix: register the listener first, then call loadSource. Also switch MP4 and native-HLS paths to play on loadedmetadata (not immediately after load()) which is the earliest safe moment to call play(). Belt-and-suspenders canplay fallback now also explicitly mutes before calling play(). Co-Authored-By: Claude Sonnet 4.6 <[email protected]>