Force getUserMedia повторное приглашение при использовании HTTPS в Firefox

dnmh спросил: 12 мая 2018 в 04:56 в: javascript

Я делаю простое приложение с двумя веб-камерами, которые должны работать только на последнем Firefox. Локально он отлично работает:

  • пользователю предлагается получить доступ к камере
  • пользователь выбирает одну камеру
  • пользователь снова запрашивается
  • пользователь выбирает вторую камеру
  • оба потока работают нормально

Однако, когда я загружаю его на сервер, который обслуживает страницу через HTTPS, доступ с первой камеры запоминается, и я получаю только два одинаковых потока.

Есть ли способ принудительно перенаправить запрос на HTTPS, чтобы пользователь мог выбрать другую камеру?

Это мой код:

    function handleSuccess1(stream) {
      video1.srcObject = stream;      navigator.mediaDevices.getUserMedia(constraints).
        then(handleSuccess2).catch(handleError);
    }    function handleSuccess2(stream) {
      // this gets called automatically with the first stream
      // without re-prompting the user
      video2.srcObject = stream;
    }    const constraints = {
      video: true
    };    function handleError(error) {
      console.error(error);
    }    navigator.mediaDevices.getUserMedia(constraints).
        then(handleSuccess1).catch(handleError);

1 ответ

Есть решение
Iter Ator ответил: 12 мая 2018 в 05:08

Используйте navigator.mediaDevices.enumerateDevices(), чтобы просмотреть доступные камеры и / или микрофоны.

Подробнее об этом читайте здесь: https://developer.mozilla.org/en- США / документы / Web / API / MediaDevices / enumerateDevices

dnmh ответил: 13 мая 2018 в 05:31
Если я правильно понял, я могу использовать идентификаторы устройств в качестве ограничений в getUserMedia?
Iter Ator ответил: 14 мая 2018 в 08:17
Да, перейдите deviceId в getUserMedia, как в этом примере: stackoverflow.com/a/33770656