Как запустить заднюю камеру с помощью webkitGetUserMedia
Я пытаюсь открыть заднюю видеокамеру в старом телефоне (версия 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 ответа
Вам нужно изменить режим облицовки
{ audio: true, video: { facingMode: "user" } }
или же
{ audio: true, video: { facingMode: { exact: "environment" } } }
Возможно, вы захотите черпать вдохновение в том, как adaptor.js переключает сталкивающийся режим в старых версиях: https://github.com/webrtcHacks/adapter/blob/master/src/js/chrome/getusermedia.js
В основном он пытается использовать navigator.mediaDevices.enumerateDevices (вам, возможно, придется прибегнуть к более ранней функции MediaStreamTrack.getSources()) для перечисления устройств, а затем пытается угадать, какая из них является задней камерой, передавая deviceId для getUserMedia. Будьте осторожны с этим, так как ваша старая версия может иметь разные имена ограничений (обратитесь к функции constraintsToChrome_) для deviceId, и документации для этого очень мало.
Прежде всего, я настоятельно рекомендую использовать AdapterJS, который скрывает все различия во всех различных реализациях браузера (хороший блог на эту тему от Tsahi).
Во-вторых, вы используете устаревший GUM-API, который я бы не рекомендовал. Я обнаружил проблему в проекте GitHub, которая является именно вашей проблемой, может быть, это поможет вам.
Заявлено в рамках вопроса:
navigator.getUserMedia
функция устарела, и вы должны вместо этого использовать более новуюMediaDevices.getUserMedia
функция. Ссылка на документы.
Таким образом, если вы применили эти изменения, ГУМ должен принять
{ audio: true, video: { facingMode: { exact: "environment" } } }
ограничения (которые были правильно указаны в первом ответе), которые должны дать вам видеопоток задней камеры вашего телефона.