Подтвердить что ты не робот

Chrome getUserMedia не запрашивает разрешения на локальном уровне

Я пытаюсь поиграть с navigator.getUserMedia в Chrome; однако он не запрашивает разрешения при обслуживании локально (файл:///whatever/index.html), но делает это на JSFiddle (http://jsfiddle.net/EBsvq/) и других сайтах.

Кто-нибудь знает причину этого? Мне нужно как-то reset мои разрешения?

Вот что я использую локально:

<html>
<head></head>
<body>
   <button id="btn">Start</button>

<script type="text/javascript">
   /*! jQuery v1.8.3 jquery.com | jquery.org/license */
   //JQuery goes here
</script>

<script type="text/javascript">
  navigator.getUserMedia = navigator.webkitGetUserMedia || navigator.getUserMedia;

  $(function(){
    $('#btn').click(function(){
      navigator.getUserMedia({audio: true}, 
      function(){
        alert('success');
      },
      function (err) {
        alert('fail: ' + JSON.stringify(err));
      }); }); });
      </script>
  </body>
</html>
4b9b3361

Ответ 1

Chrome блокирует много вещей на URI file:///, не сообщая об ошибке безопасности (например, Geolocation). Ваш лучший вариант - запустить с локального веб-сервера, если у вас установлен Python, попробуйте SimpleHTTPServer.

Ответ 2

Вы можете использовать флаг --allow-file-access-from-files из командной строки при открытии хром, чтобы иметь возможность использовать getUserMedia из локальной файловой системы.

Ответ 3

Я столкнулся с подобной проблемой, но связан с доступом к микрофону. Chrome блокирует доступ к устройству, если вы обслуживаете файл через файл://(обратите внимание, что на Microsoft Edge и Firefox он работал через файл:://).

Одно из решений, которое я нашел для Chrome:

  • открыть хром типа в URL хром://версия/
  • скопируйте значение поля "Командная строка" в командной строке и добавьте --allow-file-access-from-files и запустить его
  • после открытия Chrome и введите ваш файл://url.

Для запуска Chrome всегда так, щелкните правой кнопкой мыши значок Chrome и выберите свойства. На вкладке "Ярлык" добавьте к целевому значению все параметры командной строки из 2.

Ответ 4

Немного нетривиально, как выполнить командную строку arg в OS X. Обычно это будет выглядеть как

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --allow-file-access-from-files

Если вы такой урод, как я, и поместите свои приложения в ~/Applications, тогда это будет

"/Users/yougohere/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --allow-file-access-from-files

Если ни один из них не работает, введите chrome://version в адресную строку Chrome, и он расскажет вам, что вы используете для вызова "командной строки". Просто добавьте --allow-file-access-from-files к этому.

Ответ 5

Попробуйте установить простой сервер (легкий вес), установить один клик, можно загрузить здесь

Как только он будет установлен, обратитесь к приложению на страницу, которую вы хотите запустить.