The Bug

When macOS Safari 15 (thru at least 15.2) requests and receives permission to access only the camera (no audio/microphone; { audio: false, video: true } as media constraints), and when a poster attribute is used on the <video> element for displaying the resulting video stream, the video typically does not display at all. And if it does display, it remains frozen on the first frame, despite the inclusion of both the muted and autoplay attributes on the <video> element.

By navigating away from the browser window (e.g., by switching to another virtual desktop screen) and returning, the video does appear and will be playing as expected.

However, by either:

  1. removing the poster attribute from the <video> element, or
  2. asking for additional permission for the microphone ({ audio: true, video: true } as media constraints),

the resulting video stream displays and autoplays in Safari 15 as expected. Links to examples and source code below.

The Examples