不支持当前使用applyConstraints切换的FaceingMode(Media Stream Api)

问题描述 投票:0回答:1

我正在阅读this article,几乎已经读完一半,您可以阅读以下内容

使约束生效

[如果您需要随时获取一组当前应用于媒体的约束,您可以通过调用MediaStreamTrack.getConstraints()获得该信息,例如如下面的示例所示。

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()开头:

{
  "facingMode": { "exact": "user" }
}

并在此配置下使用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表面上与朋友一起尝试,他们收到了类似的错误。

this articlethis forum bug report中找到了这些问题的参考。所以我的问题是,这是预期的行为还是对这两篇文章和第一篇文章的帮助过时了?

此外,我非常感谢您提供有关如何使用applyConstraints()正确切换相机的任何建议

提前感谢

javascript constraints webrtc getusermedia mediastream
1个回答
0
投票
我认为applyConstraints()在同一设备上工作。因此,面对模式变成另一台设备将是错误。
© www.soinside.com 2019 - 2024. All rights reserved.