Camera Tests camera multi-camera USB webcam

Multi Camera Test

Preview two cameras side by side when your device exposes multiple inputs.

Interactive tool

Run the test

Runs in your browser

Two cameras at once

Needs at least two videoinput devices. Both streams stay in your browser and are stopped when you press Stop.

Permission status

Checked in your browser. DeviceHub does not store permission grants.

  • Camera Checking…

Live results

Metrics update as you run the test. Nothing is uploaded.

Loading

Waiting for interactive tool output…

Device information

Labels and capability details reported by your browser.

No device details yet.

Description

About Multi Camera Test

Introduction

The DeviceHub Multi Camera Test previews two cameras side by side when your computer or phone exposes multiple video inputs through the WebRTC device enumeration APIs. Creators running a face cam plus an overhead document camera, teachers alternating between room-wide and desktop views, developers debugging exact deviceId selection in getUserMedia constraints, and IT staff validating USB docks with several webcams need concurrent visibility that a single-preview diagnostic cannot provide. This free browser page uses getUserMedia and mediaDevices.enumerateDevices to open distinct MediaStreams when the operating system, drivers, and browser jointly permit dual capture. Not every phone or laptop allows two open cameras at once, the test surfaces that limitation honestly instead of silently falling back to duplicate feeds. No native installer is required; everything executes locally inside a secure browser context with permission-gated labels. Understanding whether your hardware supports simultaneous streams saves hours of misconfigured OBS scenes or broken secondary-camera options in meeting software. Classroom AV staff validating document cameras plus presenter webcams before hybrid lessons use dual preview to confirm both deviceIds open without silent fallback to duplicate feeds. Hybrid event producers confirming presenter and audience camera paths before streaming to YouTube or Teams Live Events use dual preview to catch silent deviceId misconfiguration early.

What this tool does

The tool enumerates videoinput devices after an initial permission grant, lets you assign distinct cameras to two preview panes, and attempts to start separate getUserMedia calls with exact deviceId constraints for each selection. Each pane indicates whether its MediaStream is live, stalled, or failed so you can spot exclusive-access errors quickly without reading console logs. You can swap assignments between panes to verify deviceIds are truly distinct rather than accidentally opening the same sensor twice with different labels. Stopping releases both streams through track.stop() on every active MediaStreamTrack. The page is a concurrency and selection diagnostic, not a full production switcher, NDI router, or multi-track recorder. When dual open fails, you still learn which single camera works in isolation, a valuable narrowing step for support tickets blaming "broken second cam" hardware. When dual open succeeds, optional per-pane getSettings() readouts help confirm distinct width, height, and deviceId values rather than duplicated negotiation on one sensor.

When to use it

Use Multi Camera Test when building or supporting two-webcam setups for streaming or hybrid classrooms, when a meeting app's secondary camera option fails despite both devices appearing in Windows Device Manager, when validating that a capture card and a USB webcam both enumerate with unique deviceIds, and when confirming that a docking station does not drop the second device under sustained load. Workshop facilitators checking presenter and audience cameras benefit from a quick side-by-side sanity check before going live. QA engineers reproducing deviceId regression bugs across browser versions use it as a minimal reproduction surface. Mobile users should expect frequent single-camera limits due to OS policy. If you only have one physical sensor, the standard Webcam Test is the appropriate starting point rather than this dual-pane page. OBS users debugging which physical sensor maps to which browser deviceId before writing exact constraints in browser-source capture workflows benefit from side-by-side verification here. Help-desk scripts that ask users to verify a second USB webcam before approving hardware replacements can link directly to this concurrency diagnostic instead of vendor utilities.

How it works

After an initial getUserMedia grant, often with video: true to satisfy privacy rules for label disclosure, mediaDevices.enumerateDevices() lists videoinput entries including deviceId and label fields once the Permissions API allows friendly names to appear. Each preview pane requests its own getUserMedia({ video: { deviceId: { exact: id } } }) invocation to bind a specific sensor rather than accepting the browser default first available device. Successful negotiation yields two independent MediaStreams attached to two HTMLVideoElement nodes for side-by-side comparison in the same tab. Failure commonly surfaces as OverconstrainedError when a deviceId is stale after unplug, or NotReadableError when hardware cannot open both streams concurrently due to driver exclusivity or mobile OS policy. MediaStreamTrack.getSettings() can be read per stream to confirm distinct width, height, or deviceId values and catch accidental duplicate opens of the same physical sensor. HTTPS secure context is mandatory for enumerateDevices label disclosure and for concurrent getUserMedia calls with exact deviceId constraints on both preview panes in the same tab. Permissions API camera grant must precede meaningful enumerateDevices labels; without it, pane assignment dropdowns show opaque ids that are easy to confuse during dual-stream setup.

Step-by-step instructions

  1. Connect every USB webcam or capture device you plan to test, confirm the operating system recognizes them in Device Manager or system settings, then open the Multi Camera Test page on DeviceHub over HTTPS.
  2. Click Start and allow camera permission when prompted so mediaDevices.enumerateDevices() can return videoinput labels instead of blank strings tied to opaque deviceId values before grant.
  3. Select camera A for the first preview pane and camera B for the second pane using distinct entries from the enumerated device list, avoiding two labels that might refer to the same underlying sensor hardware.
  4. Start both previews and verify each HTMLVideoElement pane shows a unique moving image with independent motion rather than duplicated feeds or a frozen black tile indicating a failed second getUserMedia call.
  5. If the second stream fails with NotReadableError, stop both previews, test each camera alone in single-device mode, then retry dual mode to determine whether the limitation is hardware exclusivity or a stale deviceId constraint.
  6. Stop all active MediaStreamTracks before unplugging USB hardware so track.stop() releases driver locks cleanly and the OS does not leave a camera indicator stuck on after troubleshooting. Document browser engine and OS version when filing concurrent getUserMedia bugs.

Common problems

Many phones and some integrated laptops allow only one camera open globally regardless of browser engine, which manifests as the second getUserMedia call failing even though enumerateDevices lists two videoinput entries with distinct deviceIds. Windows applications using exclusive-mode capture can block the second stream until those apps close completely and release the sensor. USB bandwidth on unpowered hubs may drop the second 1080p camera or force both streams into unexpectedly low resolution modes during concurrent capture. Identical marketing labels can still map to different deviceIds, compare ids using Device Information if pane assignment seems ambiguous during setup. Browser engines differ: one may permit dual open on a given PC while another refuses with identical hardware, document engine version when filing concurrency bugs. Stale deviceIds after sleep, dock, or unplug events require refreshing enumeration before retrying exact constraints on the second pane assignment dropdown.

Privacy explanation

Both preview panes remain local to your browser session on your device; neither stream is uploaded, relayed through WebRTC, or stored on DeviceHub servers during dual-camera testing. Camera permission through the Permissions API is required to enumerate friendly device names and open hardware via getUserMedia for each pane. Stop all tracks with track.stop() to extinguish camera indicator lights and release sensors for Zoom, Teams, or OBS. Revoke site access when multi-camera troubleshooting is complete if you prefer not to retain grant for this origin. Dual capture does not create server-side recordings; both MediaStreams remain in your browser memory until track.stop() releases each sensor. Revoke site access when multi-camera troubleshooting is complete if shared workstations should not retain camera grant for this origin after IT validation finishes. Neither pane uploads frames to DeviceHub; both streams remain client-side until you stop all tracks explicitly.

Runtime principles

Built for the browser

What happens when you run this test — without downloads or accounts.

  1. 01

    Runs in your browser

    Multi Camera Test uses standard web APIs — no install, extension, or desktop app required.

  2. 02

    You control permissions

    Your browser asks before camera or microphone access. You can revoke access anytime in site settings.

  3. 03

    Media stays local

    Preview and level checks are processed in this tab. DeviceHub does not upload your live media streams.

Compatibility

Supported browsers

Expected support for modern engines. Individual APIs may still vary by device.

  • Chrome

    supported

    Latest stable

  • Firefox

    supported

    Latest stable

  • Safari

    supported

    Latest stable

  • Edge

    supported

    Latest stable

Devices

Supported devices

Hardware and form factors this browser test is designed to exercise.

  • Built-in webcams

    Laptop and all-in-one front cameras via getUserMedia.

  • USB webcams

    External cameras enumerated after permission is granted.

  • Mobile cameras

    Phone and tablet browsers with camera permission.

  • Permission note

    Requires camera permission in the browser site settings.

Privacy

Your data stays with you

Multi Camera Test is built privacy-first. Diagnostics run in your browser session whenever web APIs allow.

Read our privacy policy

Troubleshooting

Common problems

Quick fixes before you dig into FAQs.

Only one camera appears
Grant permission, then refresh device lists. Attach the second camera, wait for OS detection, and close apps that might hide devices. Some phones expose only one facingMode at a time.
Second preview fails to start
Hardware or drivers may allow only one open stream. Stop the first preview, start the second alone to confirm it works, then retry dual open on a machine that supports concurrent capture.
Labels are blank or identical
Labels populate after a successful permission grant. Unplug/replug USB cameras, and prefer browsers that surface distinct deviceIds for each sensor.

FAQ

Frequently asked questions

Structured answers for users and FAQ rich results.

Browse FAQs
Can every device open two cameras at once?
No. Many phones and some laptops allow only one open camera. This tool makes concurrent success or failure visible.
Why is the second preview failing?
Another app may hold exclusive access, USB bandwidth may be insufficient, or the driver may reject a second getUserMedia stream. Test each camera alone first.
Do I need permission before labels appear?
Yes. Browsers typically hide friendly device names until camera permission is granted for the site.
Is this a production switcher for streaming?
No. It is a side-by-side diagnostic for enumeration and concurrent access, not an NDI studio or recording suite.
Are both streams uploaded?
No. Both previews remain local. Stopping the test ends each MediaStream on your machine.
Can I compare a webcam and a capture card?
Yes if both enumerate as videoinput devices. Assign each to a pane and confirm distinct live feeds when concurrent open is supported.

Newsletter

Updates coming soon

A lightweight email digest for new tools and release notes is planned. No signup form is live yet — check Release Notes for product updates.

Release notes

Need another diagnostic after Multi Camera Test?

Explore related DeviceHub tools that pair well with this test.