Я читаю эту статью и почти на полпути вы можете прочитать о следующем:
function switchCameras(track, camera) {
let constraints = track.getConstraints();
constraints.facingMode = camera;
track.applyConstraints(constraints);
}
Эта функция принимает MediaStreamTrack и строку, указывающую на камеру. режим для использования, извлекает текущие ограничения, устанавливает значение MediaTrackConstraints.facingMode на указанное значение, затем применяет обновленный набор ограничений.
Но когда вы попробуете живую демонстрацию в В конце статьи я пытаюсь изменить facingMode
videoConstraint
на MediaStreamTrack
, инициированном с помощью getUserMedia
, при потоковой передаче с использованием track.applyConstraints(constraints);
Например, если началось с getUserMedia()
на этих ограничения:
{
video: {
"facingMode": "user"
},
audio: false
}
и использование applyConstraints()
с этой конфигурацией:
{
"facingMode": { "exact": "environment" }
}
вывод является ошибкой
- в Android (Chrome):
Error OverconstrainedError in contraint facingMode: Cannot satisfy constraints
- в iOS (Safari):
Error OverconstrainedError in constraint facingMode: Constraint not supported
, и я также попробовал с другом на поверхности Windows, и они получили аналогичную ошибку.
Ссылки на эти проблемы находятся в этой статье и этот отчет об ошибке на форуме . Итак, мой вопрос: это ожидаемое поведение, или справка по этим двум и первой статье устарела?
Кроме того, я был бы очень признателен за любые советы о том, как правильно переключать камеры с помощью applyConstraints()
Заранее спасибо