ZoomVideo.getDevices() fails with Requested device not found when no user Video Inputs Available

Description
In the preview of my application, whenever I call the “ZoomVideo.getDevices()” function and the user has no available video input device on their system, the invocation fails and returns with the following error “DOMException: Requested device not found”. Even if the user has an audio input device and audio output devices on their system, but they do not have a video device, the entire function call fails. Please advise on what I can do to fix this issue I have with my users on this application that do not have video input devices. Thank you, all advice is appreciated!

Browser Console Error
DOMException: Requested device not found

Which Web Video SDK version?
1.10.8

Video SDK Code Snippets

ZoomVideo.getDevices().then((devices) => {

  let videoinputs = devices.filter((device) => {
    return device.kind === 'videoinput'
  })

  let audioinputs = devices
  .filter((device, index) => index !== 0 && device.kind === 'audioinput')
  .map((device) => {
    return device;
  });

  let audiooutputs = devices
  .filter((device, index) => index !== 0 && device.kind === 'audioinput')
  .map((device) => {
    return device;
  });
  
}).catch((error) => {
  if (error.name === 'NotAllowedError') {
    console.error('Devices permission denied');
  } else {
    console.error('Error getting devices:', error);
  }
})

Screenshots
If applicable, add screenshots to help explain your problem.

Device (please complete the following information):

  • Device: Macbook Pro M1
  • OS: macOS Sonoma 14.4.1
  • Browser: Chrome
  • Browser Version : Version 123.0.6312.87 (Official Build) (arm64)

If possible, I would like to suggest a change to this function such that if there is no video input available from the user, the function still returns the devices (microphones and speakers). Thank you. As a work around solution I have resorted to using navigator.mediaDevices.enumerateDevices().

Hey @tejn2000

Thank you for your suggestion. We will improve this method in the next version.

Additionally, your recommendation to utilize navigator.mediaDevices.enumerateDevices() to retrieve devices is a valuable solution.

Thanks
Vic

1 Like