navigator.mediaDevices.getUserMedia не работает, как и webkitGetUserMedia.

16

Я использую метод webkitGetUserMedia (getUserMedia через adapter.js), чтобы получить камеру над микрофоном для webRTC в моем веб-приложении. Мой сервер не защищен (SSL-сертификат отсутствует). Все это работало нормально, пока я не начал получать сообщение об ошибке: "getUserMedia() больше не работает с небезопасным происхождением. Чтобы использовать эту функцию, вам следует переключить свое приложение на безопасное происхождение, например HTTPS. См. https://goo.gl/rStTGz для более подробной информации.

Я googled, и я увидел, что теперь в Chrome мне нужно использовать navigator.mediaDevices.getUserMedia(). Я использую Chrome 47.0.2526.80 м, и на этой странице https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia говорится, что этот метод должен поддерживаться для этой версии. Однако, когда я вызываю navigator.mediaDevices.getUserMedia, я получаю undefined. Поэтому теперь я не могу использовать любой метод в Chrome.

Кто-нибудь может помочь мне в этом вопросе. Благодаря

Показать ещё 1 комментарий
Теги:
ssl
webrtc
google-chrome
html5-video

3 ответа

27

Согласно новому обновлению chrome (из Google Chrome 47), getUserMedia() больше не поддерживается в браузере Chrome по http://(Unsecure Origin), он будет работать на https://(Secure Origin)

В целях развития

1.localhost рассматривается как безопасное начало по HTTP, поэтому, если вы можете запустить свой сервер с локального хоста, вы должны проверить его на этом сервере.

2. Вы можете запустить хром с флагом --unsafely-treat-insecure-origin-as-secure="http://example.com" (заменив "example.com" на исходное состояние, которое вы действительно хотите протестировать), который будет считать это происхождение безопасным для этого сеанса. Обратите внимание, что вам также необходимо включить --user-data-dir=/test/only/profile/dir, чтобы создать новый тестовый профиль для работы флага.

ссылка: https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins

  • 5
    Это был на самом деле не мой вопрос. Я видел и прочитал всю эту информацию уже. Мой вопрос состоял в том, что, как я вижу, navigator.getUserMedia устарел. Но в то же время navigator.MediaDevices.getUserMedia не определен! Итак, как можно отказаться от одного метода, если преемник не существует? Второй вопрос: если navigator.getUserMedia не будет работать с незащищенными источниками, что будет? Только способ "--unsafely-Treat-insecure-origin-as-secure =" example.com "? На naviagtor.MediaDevices.getUserMedia не было ясно, будет ли этот новый метод работать на незащищенных источниках или нет!
  • 3
    На самом деле, Firefox продолжает поддерживать getUserMedia через http: //
Показать ещё 7 комментариев
8

Последнее обновление google-chrome заставляет getUserMedia работать только на безопасном происхождении. Существует способ заставить его работать, но только для развивающихся целей. Просто запустите chrome, используя cmd с вариантами thoses

- ненадежно лечи-небезопасные-происхождение-как-безопасный = "example.com"

и этот параметр использовать новый профиль пользователя

- пользователем данных DIR =/тест/только/профиль/реж

FYI getUserMedia работает над firefox до сих пор, но, на мой взгляд, он будет рекомендовать безопасное происхождение, например google-chrome.

4

Вы все равно можете использовать имя старого метода в Chrome 47, если вы используете https. Изменение имени ортогонально 47 новым требованиям безопасного происхождения. См. Другие ответы.

В отношении отсутствующих методов: navigator.mediaDevices.getUserMedia был помещен обратно под флагом в Chrome, поэтому вы должны либо включить chrome://flags/#enable-experimental-web-platform-features, либо используйте последнюю версию adapter.js, например здесь: https://stackoverflow.com/questions/34199436/webrtc-getusermedia-promise-api-support-in-chrome.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню