Переключение FaceMode с помощью applyConstraints, которая В настоящее время не поддерживается (Media Stream Api) - PullRequest
0 голосов
/ 07 мая

Я читаю эту статью и почти на полпути вы можете прочитать о следующем:

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()

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 07 мая

Я думаю, причина ошибки FaceMode в том, что это другое устройство.

0 голосов
/ 08 мая

Вы не можете переключить MediaStream с передней на заднюю камеру или наоборот. Для этого вам нужно открыть новый поток с помощью getUserMedia.

...