v145 · Web APIs · Media

Chrome removes support for obsolete virtual cameras on macOS

Chrome 145 stops enumerating and allowing access to legacy virtual cameras on macOS that use the deprecated CoreMediaIO DAL (Device Abstraction Layer) plug-in architecture, which Apple removed in macOS 12 Monterey.

background

Virtual cameras — tools like OBS Virtual Camera, Snap Camera, and others — historically used the macOS CoreMediaIO DAL plug-in API to inject video streams as system cameras. Apple deprecated this API in macOS 12 and removed it in macOS 13 Ventura, replacing it with the ScreenCaptureKit and camera extensions framework.

Chrome 145 removes the code path that enumerated DAL plug-in cameras, since they can no longer work on modern macOS. Virtual cameras built on the modern macOS camera extension API continue to work normally.

concepts

  1. Virtual Camera Demo

    Enumerates available cameras using navigator.mediaDevices.enumerateDevices() and checks which are present, helping verify whether a virtual camera is using the modern or legacy API.

  2. Migration Guide

    How to update virtual camera software from the deprecated DAL plug-in to the modern macOS camera extension API, and which Chrome versions support each approach.

  3. Device Inventory Diff

    Live diff tool: enumerate every camera on this machine, classify each as real / continuity / virtual / DAL-only, and surface which ones won't survive the Chrome 145 cut.

  4. Camera Stream Tester

    Enumerate, classify, and getUserMedia-test every video input device. Confirms which cameras are live, shows resolution and frame rate, and makes it immediately visible when a DAL virtual camera is absent from the list in Chrome 145.

the change

// No web API change — the camera removal is transparent to well-behaved apps.
// If a virtual camera disappears on macOS 12+, it was using the obsolete API.

// Enumerate available cameras:
const devices = await navigator.mediaDevices.enumerateDevices();
const cameras = devices.filter(d => d.kind === 'videoinput');
cameras.forEach(cam => console.log(cam.label, cam.deviceId));

// If a virtual camera is missing in Chrome 145+ on macOS 12/13:
// → The camera app needs to update to the macOS camera extension API
//   (used by modern OBS, Camo, mmhmm, etc.)

// Modern virtual cameras work fine — only legacy DAL plug-in cameras removed.

references