We run into a different problem: one user had a microphone but no camera. He was also using a Bloomberg keyboard which, for some reason, was recognised by Chrome as a camera device. Our system picked up the "camera device" and started a video call. Chrome failed silently and did not even send audio.
Our solution was to explicitly ask the user if a camera device is present or not.
In our experience, bad voice and video quality is usually due to bandwidth issues. Also, users on WiFi networks tend to have more issues, especially if there are lots of other WiFi networks running on the same channel.