Improper camera enumeration
See original GitHub issueAs my camera is working I decided no to add this to Meta - camera issues #5425. It is however in the same ballpark. Feel free to merge if applicable.
jit.si does a bad job of enumerating cameras. Google Meet and Skype Web works perfectly. Google Duo has almost the same problem as jit.si.
Tested with the current latest versions:
UVC driver by Microsoft version 10.0.18362.693
Chrome Version 81.0.4044.113
(Officiel version) (64-bit)
The “camera” is a Cam Link 4K HDMI->USB device getting 1920x1080 at 50 frames.
The device is using the latest firmware MCU: 20.01.20 / FPGA: 67
By itself it works flawless. There are huge audio/video sync issues which I do not see on any other platforms but this is besides the point for this issue. It works as a UVC webcam with the OS supplied driver (Windows 10).
I saw an occasional freeze so I decided to update to the latest firmware. To do that you install their 4K Capture Utility
.
In my case this is 4K Capture Utility version 1.7.0.4587
and can be found at:
This tool also installs a virtual device Elgato Screen Link
.
These are my personal assumptions:
- The virtual device presents itself as a UVC device
- The virtual device reports no resolution when not running
- Is enumerated before the Cam Link 4K
Uninstalling this device makes jits.si and Google Duo work. With the virtual device installed they do not. Google Meet and Skype Web both work in both cases. Even though the software is Elgato specific it seems like you would be able to install and reproduce without any physical Elgato device.
Permissions are set in Windows to allow camera access for Chrome and Firefox.
The following webrtc sites have access to microphone and cameras: https://duo.google.com:443 https://meet.google.com:443 https://web.skype.com:443 https://test.webrtc.org:443 https://meet.jit.si:443
When using jit.si you get the error:
Failed to access your camera
Cannot use camera for an unknown reason
When checking jit.si settings it says “Preview unavailable” and “Camera” as “Permission not granted”. You cannot select anything else as “Camera”.
My personal assumptions are then:
- jit.si only grabs the first UVC device
- jit.si does not enumerate the device properly so another device can be selected
- jit.si fails when the camera returns no image but does not try the next.
In Google Duo it is slightly different. Here I am able to preview the camera in settings but fails when setting up the call.
Testing in Chrome is not revealing and gives the expected results:
Check resolution 320x240 - FAIL
Check resolution 640x480 - FAIL
Check resolution 1280x720 - FAIL
Check supported resolutions - OK
As we are at 1920x1080p50 this seems reasonable.
When testing with Firefox 75 everything is the same except that it is a little more revealing.
When going to jit.si it only asks for Elgato Screen Link
When going to Webrtc test it asks for both Cam Link 4K
and Elgato Screen Link
If I only give temporary permissions this is what happens during testing:
- First 3 resolution tests it asks for permission to
Elgato Screen Link
and then fail. - For supported resolutions it asks for permission for
Cam Link 4K
and then succeed.
While the workaround to uninstall 4K Capture Utility
work fine for me it does indicate that the camera detection routine is sub optimal. You could claim it to be an Elgato problem but at least Google Meet and Skype Web handles this gracefully.
I have screenshots if needed. And I will happily do further testing. But expect no pull request from me on this issue 😃 Feel free to close this issue at your leisure.
Issue Analytics
- State:
- Created 3 years ago
- Comments:11 (3 by maintainers)
Top GitHub Comments
I think Jitsi accidentally asks some info from the first/default camera and gets a denied there… and then via some bad error handling assumes that all cameras are not accessible. Have seen this issue on several jitsi deployments over the last few weeks.
@saghul, yes this bug was reported in the camera meta issues as well, I couldn’t repro it then as I didn’t have a non-working camera. I will give it a try by installing a virtual cam or something similar.