Как запустить заднюю камеру с помощью webkitGetUserMedia - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь открыть заднюю видеокамеру в старом телефоне (версия Android 5.0).Поскольку эти старые устройства не поддерживаются navigator.mediaDevices && navigator.mediaDevices.getUserMedia, поэтому я зависим только от webkitGetUserMedia.У меня есть успех, чтобы открыть камеру и показать видео, но он использует только переднюю камеру, и мне нужно видео с задней камеры.Вот мой код

if(navigator.webkitGetUserMedia) { // WebKit-prefixed
        navigator.webkitGetUserMedia({video: true}, function(stream){
            video.src = window.webkitURL.createObjectURL(stream);
            video.play();
        }, errBack);

Я не нашел никакой документации, связанной с этим.Есть ли способ открыть заднюю камеру с помощью webkitGetUserMedia?Во-вторых, поскольку я использую приложение на основе cordova и по умолчанию Cordova использует веб-представление системы по умолчанию (есть возможность использовать crosswalk, но не хочу смешивать его с приложением на основе cordova), есть ли возможность интегрировать любое другое веб-представление для достижения этой цели (getUserMedia и т. Д.))?

Ответы [ 3 ]

0 голосов
/ 26 февраля 2019

Прежде всего, я настоятельно рекомендую использовать AdapterJS , который скрывает все различия во всех различных реализациях браузера (хороший блог по этой теме от Цахи).

Во-вторых, вы используете устаревший GUM-API, который я бы не рекомендовал.Я обнаружил проблему в проекте GitHub, которая является именно вашей проблемой, может быть, это поможет вам.

Заявлено:

Функция navigator.getUserMedia устарела, и вместо нее следует использовать более новую функцию MediaDevices.getUserMedia. ссылка для документов.

Таким образом, если вы применили эти изменения, GUM должен принять ограничения

{ audio: true, video: { facingMode: { exact: "environment" } } }

(чтопервый ответ указан правильно), который должен дать вам видеопоток задней камеры вашего телефона.

0 голосов
/ 28 февраля 2019

Возможно, вы захотите черпать вдохновение в том, как adaptor.js подсчитывает сталкивающийся режим в старых версиях: https://github.com/webrtcHacks/adapter/blob/master/src/js/chrome/getusermedia.js

В основном он пытается использовать navigator.mediaDevices.enumerateDevices (вам, возможно, придется прибегнуть к более раннему MediaStreamTrack.Функция getSources ()) для перечисления устройств, а затем пытается угадать, какое из них является задней камерой, передавая deviceId getUserMedia.Будьте осторожны с этим, поскольку ваша старая версия может иметь разные имена ограничений (обратитесь к функции constraintsToChrome_) для deviceId, и документации для этого очень мало.

0 голосов
/ 26 февраля 2019

Вам нужно изменить режим облицовки

{ audio: true, video: { facingMode: "user" } }

или

{ audio: true, video: { facingMode: { exact: "environment" } } }
...