我正在阅读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" }
}
输出是错误
Error OverconstrainedError in contraint facingMode: Cannot satisfy constraints
Error OverconstrainedError in constraint facingMode: Constraint not supported
并且我还在Windows表面上与朋友一起尝试,他们收到了类似的错误。在this article和this forum bug report中找到了这些问题的参考。所以我的问题是,这是预期的行为还是对这两篇文章和第一篇文章的帮助过时了?
此外,我非常感谢您提供有关如何使用applyConstraints()
正确切换相机的任何建议
提前感谢