Por que a resolução mostrada é menor do que o anunciado pelo fabricante da câmera?
Porque a constraint pedida na chamada de getUserMedia é só um pedido; o navegador negocia com o hardware e com outras aplicações usando a câmera no momento, e o valor final, revelado por getSettings(), pode ficar abaixo do máximo teórico anunciado na caixa do produto.
O teste funciona se eu tiver mais de uma câmera conectada ao computador?
Sim: o navegador oferece um seletor de dispositivo pela própria interface de permissão, e a track escolhida expõe seu deviceId específico via getSettings(), permitindo trocar de câmera sem recarregar a página se o site implementar essa opção.
Por que aparece um erro ao abrir esta página fora de HTTPS?
Porque getUserMedia exige contexto seguro, isto é, HTTPS ou localhost; um endereço em HTTP puro na rede local, por exemplo, tem a chamada bloqueada pelo próprio navegador antes de qualquer prompt de permissão aparecer.
O frame rate também cai junto com a resolução?
Pode cair de forma independente: câmeras costumam reduzir frameRate automaticamente em ambientes escuros para alongar o tempo de exposição de cada quadro, mesmo que a resolução negociada continue a mesma pedida pela constraint original.