媒体设备应用约束不起作用



我正在尝试对视频轨道应用新的约束,但它不起作用:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body onload="onLoad();">
<p id="res1"></p>
<p id="res2"></p>
<script>
async function onLoad() {
var opts1 = {audio: true, video: {advanced: [{ width: 1280, height: 960 },]}};
var stream = await navigator.mediaDevices.getUserMedia(opts1);
var cstr1 = stream.getVideoTracks()[0].getSettings();
document.getElementById("res1").innerHTML = cstr1.width + ", " + cstr1.height;
var opts2 = {audio: true, video: {advanced: [{ width: 640, height: 480 },]}};
await stream.getVideoTracks()[0].applyConstraints(opts2);
cstr2 = stream.getVideoTracks()[0].getSettings();
document.getElementById("res2").innerHTML = cstr2.width + ", " + cstr2.height;
}
</script>
</body>
</html>

我期待着答案";1280960";在施加约束之前;640、480〃;之后但我看到";1280960";相反为什么?如何正确应用它?

您只需要应用opts2video值作为applyConstraints(constraints)constraints参数即可使其工作。

var opts2 = { advanced: [{ width: 640, height: 480 }] }
await stream.getVideoTracks()[0].applyConstraints(opts2)

如果查看MDN上的MediaTrackConstraints属性,可以看到没有audiovideo属性。

最新更新